我使用Joda Time格式化dateTime如下:

DateTimeFormatter dateFormatter = DateTimeFormat.longDate();

String startTimeStr = dateFormatter.print(localStartTime);

变量的值是:

localStartTime={org.joda.time.LocalDateTime@830018681648}"2013-04-06T23:54:35.000"

startTimeStr={java.lang.String@830018688880}"2013年4月6日"

问题是如何在月和日获得区域设置日期格式?我试过以下代码:

DateTimeFormatter monDayFormatter = DateTimeFormat.forPattern("MMMd");

String startTimeStr = monDayFormatter.print(localStartTime);

变量的值是:

localStartTime={org.joda.time.LocalDateTime@830018681648}"2013-04-06T23:54:35.000"

startTimeStr={java.lang.String@830018683220}"4月6"

我期望startTimeStr是4月6日.这里的汉字日=日.

我不想将模式硬编码为“MMMd日”,因为它应该根据当前的语言环境信息进行自我调整.任何帮助将不胜感激.

解决方法:

在unicode财团的网站上,您将在中文CLDR repository中找到例如以下条目(日历类型=格里高利):

y年M月d日EEEE

y年M月d日

y年M月d日

yy/M/d

在内部,JodaTime或JDK dateformat类中的每个本地化日期格式都将转换为这样的模式 – 包括像“日”这样的文字. CLDR没有定义仅限月 – 日的格式,但这只是一般年 – 月 – 日格式的一部分,因此如果您使用

DateTimeFormatter dateFormatter = DateTimeFormat.longDate().withLocale(Locale.CHINESE);

LocalDateTime localStartTime = new LocalDateTime(2013,4,6,23,54,35);

String startTimeStr = dateFormatter.print(localStartTime);

System.out.println(startTimeStr); // output: 2013年4月6日

这段代码:

DateTimeFormatter dateFormatter = DateTimeFormat.forPattern("M月d日");

LocalDateTime localStartTime = new LocalDateTime(2013,4,6,23,54,35);

String startTimeStr = dateFormatter.print(localStartTime);

System.out.println(startTimeStr); // output: 4月6日

然后你得到你想要的.虽然你写道:

我不想将模式硬编码为“MMMd日”

这几乎与库内部完成的程序相同.因此,通过选择适当的文字来对模式本身进行本地化.没有办法从CLDR中提取没有年份的本地化日期模式.如果你想要这个,那么你必须为不同的语言环境管理你自己的一组本地化的月日模式,可能在Map< Locale,String>中.

2016-12-06更新:

Joda-Time没有改变任何语言环境的通用月 – 日模式的情况.不幸的是Joda-Time的官方继承者,JSR-310(java.time-package)也管理不好,请参阅JDK-issue 8168532.这足以让我找到我自己的时间库Time4J的解决方案.与此同时.对CLDR数据的密切分析表明,还有其他日期格式可用于多种语言,但在不同的部分和accessible via a group of fields中.键“Md”,“MMMd”和“MMMMd”与您的用例相关. Time4J中的示例(在未来的版本中,JSR-310也应该得到支持):

PlainTimestamp tsp = Iso8601Format.EXTENDED_DATE_TIME.parse("2013-04-06T23:54:35.000");

AnnualDate ad = AnnualDate.of(tsp.getMonth(), tsp.getDayOfMonth());

ChronoFormatter chinese =

ChronoFormatter.ofStyle(DisplayMode.LONG, Locale.CHINESE, AnnualDate.chronology());

ChronoFormatter english =

ChronoFormatter.ofStyle(DisplayMode.LONG, Locale.ENGLISH, AnnualDate.chronology());

System.out.println(chinese.format(ad)); // 4月6日

System.out.println(english.format(ad)); // Apr 6

还值得注意的是,在以合理的方式构建格式化程序之后,不能更改语言环境,因为本地化的模式结构在构造期间将被冻结,并且对于稍后的区域设置的更改不再是合理的.但是,这将在未来的版本中得到改进.

标签:android,datetime-format,locale,jodatime

来源: https://codeday.me/bug/20190612/1226347.html

android 获取英文日期格式,android – 如何获取月和日的语言环境日期格式相关推荐

  1. 计算机语言 时间,甲骨文将ISO日期到计算机的语言环境日期/时间

    我插入到一个Oracle数据库表使用下列插入字符串(约 - 有140列,所以我不会显示所有):甲骨文将ISO日期到计算机的语言环境日期/时间 "INSERT INTO AMS_ASSET_C ...

  2. android 字符串翻译,Android Lint:如何忽略区域语言环境字符串文件中缺少的翻译警告,该文件故意仅覆盖某些默认翻译?...

    是否有可能在没有Lint抱怨MissingTranslation的单独资源文件中翻译某些字符串,而不是全部? 例如:我的应用程序的字符串都在res / values / strings.xml中.其中 ...

  3. C/C++语言之 日期 时间

    C++ 标准库没有提供所谓的日期类型.C++ 继承了 C 语言用于日期和时间操作的结构和函数.为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件. 有四 ...

  4. c语言根据日期求星期不用公式,...迅速算出是星期几的方法给你任何一年看日期怎么能...-知道日期怎么算周几-数学-倪滩贝同学...

    概述:本道作业题是倪滩贝同学的课后练习,分享的知识点是知道日期怎么算周几,指导老师为冉老师,涉及到的知识点涵盖:...迅速算出是星期几的方法给你任何一年看日期怎么能...-知道日期怎么算周几-数学,下 ...

  5. R语言自动化报告格式——knitr

    R语言自动化报告格式--knitr 相关文献: R语言自动化报告格式--knitr 资讯 | R Notebooks 即将发布 ------------------------------------ ...

  6. android 日期键盘,android 日期时间格式转换;软键盘显示消失;获取系统title

    获取activty title bar: TextView actionTitle = (TextView) findViewById(com.android.internal.R.id.action ...

  7. Android手机HC-05蓝牙连接Arduino nano获取DHT-11温湿度传感器数据

    如果您觉得本文对您有用,希望您点赞,收藏并且把它分享出去,不明白的可以在评论区留言,我会一一解答,感谢您的支持!! 目标 Android手机HC-05蓝牙连接Arduino nano获取DHT-11温 ...

  8. android 时间戳 转日期格式,Android 时间戳和日期之间的转化

    在Android开发过程中,经常会遇到日期的各种格式转换,主要使用SimpleDateFormat这个类来实现,掌握了这个类,可以转换任何你想要的各种格式. 常见的日期格式: 日期格式:String ...

  9. android判断参数非空,Android Studio注释模板Live Templates参数获取不到为null的一些

    Android Studio注释模板Live Templates参数获取不到为null的一些 Android Studio注释模板Live Templates参数获取不到为null的一些解决方法 提示 ...

最新文章

  1. 桌面上的计算机打开速度慢,电脑开机进入桌面特别慢
  2. android studio 链接编辑,Android Studio怎么连接手机测试程序?
  3. 海康威视连续采图设置ROI局部显示_c#
  4. Xamarin iOS教程之页面控件
  5. 【毕业求职季】-听说你想去大厂看学姐,带你看看网易java面经
  6. 邮件服务 交换空间(虚拟内存) 配置链路聚合 配置IPv6地址
  7. 在TCP/IP模型中,( )处理关于可靠性、流量控制和错误校正等问题。
  8. 《MySQL——临时表》
  9. 常见排序查询算法Java代码实现
  10. 异常处理:try-catch-finally与throws的区别及使用情况
  11. Jar包冲突解决方法
  12. 数据库表的基本操作——创建一个表,索引和查询
  13. C#生成JSON数据格式的函数
  14. Kaggle信用卡欺诈数据
  15. 加拿大 生物工程计算机最好的学校,加拿大哪些大学有生物工程本科专业?这五大院校是理科与工科的完美结合!...
  16. 计算机媒体分类及其特点,多媒体的媒体种类有哪些?试归纳叙述多媒体关键特性以及这些特性之间的关系。...
  17. 《专注力--化繁为简的惊人力量》之创造力的30天
  18. OSChina 周日乱弹 —— 十大人艰不拆的网络真相!
  19. 腾讯企业邮箱满了,如何清空邮箱?
  20. 记录C语言学习【单个按键之长按+短按】

热门文章

  1. Linux 中的 文件系统表Fstab 是什么?
  2. 关于服务器渲染与客户端渲染的区别
  3. Java菜鸟教程系列 学习笔记总结 基础篇(1)
  4. 撰写毕业论文中word公式编辑器的学习使用(二)——公式编辑器
  5. 零基础该怎么去学习3D建模
  6. 神经网络(neural network)以及训练原理
  7. L1-052 2018我们要赢 (5分)
  8. 不限专业的计算机证书,不限专业和工作年限就能报考的证书有哪些?
  9. mui mui-icon-extra的使用
  10. c语言远控源码,远控鼠标!C语言简单小程序:舍友要砸电脑了,送源码!