android– 将日期格式化为本地设置,但仅限于月和日

android– 将日期格式化为本地设置,但仅限于月和日,第1张

概述我的日期是一个字符串,格式为“2013-12-31”.我想根据用户的设备设置将其转换为本地日期,但仅显示月份和日期.因此,如果用户的设备设置为德语,则日期应转换为“31.12”.在德国,首先是一个月,然后是一个月.我不希望将这一年包括在内.解决方法:对于Build.VERSION.SDK_INT<18我无法找

我的日期是一个字符串,格式为“2013-12-31”.我想根据用户的设备设置将其转换为本地日期,但仅显示月份和日期.因此,如果用户的设备设置为德语,则日期应转换为“31.12”.在德国,首先是一个月,然后是一个月.我不希望将这一年包括在内.

解决方法:

对于Build.VERSION.SDK_INT< 18我无法找到一种方法来获得符合用户偏好的月/日格式.如果您愿意以用户的语言环境默认模式(不是他们的首选顺序或格式)接受月/日,则This answer有效.我的实现在小于18的版本中使用完整的数字格式,或者如果在以下精心编程的一系列步骤中遇到任何问题.

>将用户的数字日期格式模式作为String
>将图案缩小为骨架格式,无需符号或年份
>使用DateFormat.getBestDateTimePattern获取本地化的月/日格式
>根据用户首选订单重新排序本地化的月/日格式. (关键假设:天和月可以天真地换成所有本地化的数字格式)

这应该导致在本地化格式中遵循用户偏好的月/日模式.

获取每个this answer的用户日期模式字符串:

java.text.DateFormat shortDateFormat = DateFormat.getDateFormat(context);if (shortDateFormat instanceof SimpleDateFormat) {    String textPattern = ((SimpleDateFormat) shortDateFormat).topattern();}

通过删除所有不是’d’或’M’的字符,将模式减少到日/月骨架,示例结果:

String skeletonPattern = 'ddMM'

获取本地化的月/日格式:

String workingFormat = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeletonPattern);

(注意:此方法需要API 18及更高版本,并且不会以用户首选的顺序或格式返回值,因此这个冗长的答案):

从此方法获取用户首选日期顺序(‘M’,’d’,’y’):

char[] order = DateFormat.getDateFormatOrder(context);

(注意:我想您可以解析原始模式以获取此信息)

如果workingFormat的顺序正确,那么您的工作就完成了.否则,切换模式中的’d’s和’M’.
这里的关键假设是天和月可以天真地交换所有本地化的数字格式.

DateFormat monthDayFormat = new SimpleDateFormat(workingFormat);
总结

以上是内存溢出为你收集整理的android – 将日期格式化为本地设置,但仅限于月和日全部内容,希望文章能够帮你解决android – 将日期格式化为本地设置,但仅限于月和日所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存