我正在寻找一组命令行参数,这些参数允许我强制为java应用程序设置一组特定的语言环境设置。
假设我无法修改应用程序,因此我必须使用java -Dmy.prop="value"
设置属性。
我正在寻找更改日期/时间格式以使其符合ISO-8601标准(军事时间),但我无法找到适当的属性。
答案 0 :(得分:3)
我怀疑此问题的正确解决方案是提供新的Locale
变体,例如en_US_mil
。
<language code>[_<country code>[_<variant code>]]
这可以通过java.util.spi和java.text.spi服务机制实现类来完成。
mentioned上的此主题为ICU website。
答案 1 :(得分:2)
设置默认Java语言环境设置的推荐方法是通过shell /操作系统语言环境设置来完成此操作。例如,在UNIX / LINUX上,默认语言环境由环境变量确定。
以下信息来自Java Internationalization FAQ:
我可以在应用程序外设置默认语言环境吗?
这取决于实施 您正在使用的Java平台。该 初始默认语言环境通常是 由主机运营确定 系统的语言环境。版本1.4和 更高的Sun的JRE让你覆盖 这通过设置user.language, user.country和user.variant系统 命令行中的属性。对于 例如,选择Locale(“th”,“TH”, “TH”)作为初始默认语言环境, 你会用:
java -Duser.language = th -Duser.country = TH -Duser.variant = TH MainClass
由于并非所有运行时环境 提供此功能,它应该只 用于测试。
修改强>
问题是:
我正在寻找改变日期时间格式以使其符合ISO-8601标准(军事时间),但我无法为此找到合适的礼节。
您似乎希望有选择地覆盖当前区域设置的某些方面,而不是完全更改它。这样做的简单方法是让应用程序完成工作;即使用指定的日期格式而不是当前语言环境给出的默认格式。但如果应用程序是封闭源代码,您可能无法更改它。
可能可以使用以下方法解决此问题:
最后,如果应用程序未使用区域设置机制来决定使用哪种日期格式,则基于更改区域设置的任何更改都将无效。
答案 2 :(得分:1)
很好,我对同样的事情感兴趣,但到目前为止我只有部分解决方案:
user.timezone=UTC
user.country=CA
user.variant=
user.language=en
file.encoding=utf8
您可以使用加拿大,因为它是使用ISO 8601格式的国家之一。