我正在使用 swing 框架和小程序。
如果我将语言环境设置为 en_US
,则时间显示为 AM 和 PM。
如果我将 Locale 设置为 ms_MY
,则时间以 Pagi 和 patang 格式显示。
使用区域设置 ms_MY
时,如何显示 AM 和 PM 时间?
请帮助我
最佳答案
我猜你使用 <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/DateFormat.html" rel="noreferrer noopener nofollow">DateFormat</a>
显示时间目的。我什至假设您通过调用 <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/DateFormat.html#getTimeInstance(int)" rel="noreferrer noopener nofollow">DateFormat.getTimeInstance()</a>
来获取实例方法。您必须知道的是,通过各种 get*Instance 静态方法获取的 DateFormat 实例与给定的 Locale 绑定(bind)。因此,如果您想显示 AM 或 PM,则必须使用 getTimeInstance(int style, Locale aLocale)
带有 Locale.en_US 的版本。
但请注意!通过使用此方法,您的日期将以英文显示,因此日期名称将为英文名称。这真的是你想要的吗?我不知道,无论如何,这就是你会得到的。
使用 <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html" rel="noreferrer noopener nofollow">SimpleDateFormat</a>
可以获得更好的输出格式精度。
编辑更新了 SimpleDateFormat 的信息。
与我所说的相反,AM 和 PM 可以与非英语时间显示相关联。但是,它不是立即的,因为 SimpleDateFormat 的四个构造函数中的三个使用 Locale 对象来获取其信息。混合各种语言信息的唯一方法是使用 <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html#SimpleDateFormat(java.lang.String,%20java.text.DateFormatSymbols)" rel="noreferrer noopener nofollow">public SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)</a>
构造函数,它允许您定义自己的 DateFormatSymbols
实例。构造这个对象留作练习。
其他三个构造函数使用默认的 Locale 对象或给定的 Locale
对象(其中,显然,只有 DateFormatSymbols
将被使用)
关于java - 如何更改swing中的时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2947585/