如何修改设置中待选 的日期格式
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
在设置-》日期格式-》选择日期格式的时候,会看到有1个默认的日期格式和6个其他格式。如何修改默认的日期格式,即Regional,请移步FAQ:FAQ04421 ;
如何修改其他6个日期格式,或者想要增加新的自定义的日期格式,请参考本FAQ。

[SOLUTION]
日期格式选择时,弹出窗口中的日期格式是从R.array.date_format_values中拿到的。
文件:package/apps/Settings/res/values/arrays.xml (所有语言都是这个文件)
描述:
<string-array name="date_format_values" translatable="false">
<!-- The blank item means to use whatever the locale calls for. -->
<item></item>
<item>MM-dd-yyyy</item>
<item>dd-MM-yyyy</item>
<item>yyyy-MM-dd</item>
<item>EE-MMM-d-yyyy</item>
<item>EE-d-MMM-yyyy</item>
<item>yyyy-MMM-d-EE</item>
</string-array>
第一个空的item即为默认的日期格式,请不要修改;
第2-7个对应显示出来的6个日期格式,可以修改,也可以增加新的格式。
需要注意的是,在格式中只能用系统能够识别的字符来制定格式,yyyy是年份,MM是月份,dd是日,EE是星期几。
相关逻辑:
然后,在DateFormat的getDateFormatStringForSetting方法中,对取得的格式进行了处理,对于每一项都会进行替换处理。
比如对于yyyy-MMM-d-EE这个格式,在系统语言为中文时,就会找到
Donottranslate-cldr.xml (mediatek\php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks\base\res\res\values-zh-rCN)中的下面这一项
:
<string name="year_month_day_wday">"%s年 %s %s日, %s"</string>
这样显示到界面上就是“2013年12月31日,星期一”
对于 KK和L 版本定义在:
frameworks\base\core\res\res\values-zh-rCN\donottranslate-cldr.xml中的numeric_date_template;
对于非中文的其他语言,会调用Donottranslate-cldr.xml (mediatek\frameworks\base\res\res\values)中的对应字符串进行替换。
所以中文和其他语言是不一样的。
在设置-》日期格式-》选择日期格式的时候,会看到有1个默认的日期格式和6个其他格式。如何修改默认的日期格式,即Regional,请移步FAQ:FAQ04421 ;
如何修改其他6个日期格式,或者想要增加新的自定义的日期格式,请参考本FAQ。

[SOLUTION]
日期格式选择时,弹出窗口中的日期格式是从R.array.date_format_values中拿到的。
文件:package/apps/Settings/res/values/arrays.xml (所有语言都是这个文件)
描述:
<string-array name="date_format_values" translatable="false">
<!-- The blank item means to use whatever the locale calls for. -->
<item></item>
<item>MM-dd-yyyy</item>
<item>dd-MM-yyyy</item>
<item>yyyy-MM-dd</item>
<item>EE-MMM-d-yyyy</item>
<item>EE-d-MMM-yyyy</item>
<item>yyyy-MMM-d-EE</item>
</string-array>
第一个空的item即为默认的日期格式,请不要修改;
第2-7个对应显示出来的6个日期格式,可以修改,也可以增加新的格式。
需要注意的是,在格式中只能用系统能够识别的字符来制定格式,yyyy是年份,MM是月份,dd是日,EE是星期几。
相关逻辑:
然后,在DateFormat的getDateFormatStringForSetting方法中,对取得的格式进行了处理,对于每一项都会进行替换处理。
比如对于yyyy-MMM-d-EE这个格式,在系统语言为中文时,就会找到
Donottranslate-cldr.xml (mediatek\php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks\base\res\res\values-zh-rCN)中的下面这一项
:
<string name="year_month_day_wday">"%s年 %s %s日, %s"</string>
这样显示到界面上就是“2013年12月31日,星期一”
对于 KK和L 版本定义在:
frameworks\base\core\res\res\values-zh-rCN\donottranslate-cldr.xml中的numeric_date_template;
对于非中文的其他语言,会调用Donottranslate-cldr.xml (mediatek\frameworks\base\res\res\values)中的对应字符串进行替换。
所以中文和其他语言是不一样的。
