我正在尝试根据给定的区域设置以不同的方式格式化java中的日期。例如,我希望英语用户看到“nov 1,2009”(格式为“mmm d,yyyy”),挪威用户看到“1”。2009年11月。嗯。yyyy”)。
如果我将区域设置添加到simpledateformat构造函数中,那么月份部分可以正常工作,但是其余部分呢?
我希望我可以在simpledateformat中添加与locale匹配的格式字符串,但是我找不到任何方法来实现这一点。有没有可能或者我需要让我的代码检查语言环境并添加相应的格式字符串?
10条答案
按热度按时间e5nszbig1#
给定日期的Java8样式
bz4sfanl2#
热释光;博士
麻烦的阶级
java.util.Date
以及SimpleDateFormat
现在是遗留的,被java.time类取代。本地日期
这个
LocalDate
类表示一个仅限日期的值,不包含一天中的时间和时区。时区是决定日期的关键。在任何一个特定的时刻,世界各地的日期因地区而异。例如,在法国巴黎,午夜过后几分钟是新的一天,而在蒙特勒仍然是“昨天”é阿尔曲é贝克。
日期时间格式
使用
DateTimeFormatter
生成只表示日期部分或时间部分的字符串。这个
DateTimeFormatter
类可以自动本地化。要本地化,请指定:
FormatStyle
确定字符串的长度或缩写。Locale
确定(a)用于翻译日、月等名称的人类语言,以及(b)决定缩写、大写、标点等问题的文化规范。例子:
相反,可以解析本地化的字符串。
请注意,区域设置和时区是完全正交的问题。你可以有一个月é以日语呈现的所有时刻或以印地语呈现的奥克兰-新西兰时刻。
另一个例子:改变
6 junio 2012
(西班牙语)到2012-06-06
(标准iso 8601格式)。默认情况下,java.time类使用iso8601格式来解析/生成字符串。细读格式
下面是一些示例代码,用于在多个区域中仔细阅读多种格式的结果,并自动本地化。
一
EnumSet
是的实现Set
,高度优化了收集时的低内存使用率和快速执行速度Enum
物体。所以,EnumSet.allOf( FormatStyle.class )
我们收集了四个FormatStyle
枚举要循环的对象。有关详细信息,请参阅有关枚举类型的oracle教程。输出。
关于java.time
java.time框架内置于Java8及更高版本中。这些类取代了旧的遗留日期时间类,例如
java.util.Date
,Calendar
, &SimpleDateFormat
.现在处于维护模式的joda time项目建议迁移到java.time类。
要了解更多信息,请参阅oracle教程。和搜索堆栈溢出的许多例子和解释。规格为jsr 310。
您可以直接与数据库交换java.time对象。使用符合jdbc 4.2或更高版本的jdbc驱动程序。不需要线,不需要线
java.sql.*
班级。从哪里获得java.time类?
java se 8、java se 9及更高版本
内置的。
标准javaapi的一部分,带有一个捆绑的实现。
Java9添加了一些次要的特性和修复。
java se 6和java se 7
大部分java.time功能都是通过310个后端口后端口移植到Java6和Java7的。
安卓
android包java.time类的更高版本实现。
对于早期的android,threetenabp项目采用了threeten backport(如上所述)。了解如何使用threetenabp…。
threeten额外的项目用额外的类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,例如
Interval
,YearWeek
,YearQuarter
,等等。ar7v8xwq3#
使用dateformat.getdateinstance(int style,locale locale)而不是使用创建自己的模式
SimpleDateFormat
.ecfsfe2w4#
使用style+locale:dateformat.getdateinstance(int style,locale)
检查http://java.sun.com/j2se/1.5.0/docs/api/java/text/dateformat.html
运行以下示例以查看差异:
输出:
5q4ezhmt5#
日期字符串的本地化:
根据redsonic的帖子:
就像05年一样-九月-2013
jbose2ul6#
希望这对别人有帮助。请在下面的代码中找到接受locale示例并返回特定于locale的日期格式/模式的代码。
l0oc07j27#
这将根据用户的当前区域设置显示日期:
返回日期和时间:
1969年12月31日下午7:00:02
要仅返回日期,请使用:
1969年12月31日
iyr7buue8#
uoifb46i9#
ego6inou10#
java 8