我想在nl_NL语言环境下使用jave获取日期
Calendar calendar = Calendar.getInstance();
DateFormat df = new SimpleDateFormat(Pattern, new Locale("nl_NL"));
df.setTimeZone(TimeZone.getTimeZone("PST"));
String expectedDate = df.format(calendar.getTime()).toLowerCase();
System.out.println("Date in PST Timezone : " + expectedDate);
return expectedDate;我没有得到正确的nl_NL格式!
有没有人能帮帮我?
发布于 2020-07-18 01:05:31
切勿使用2-4个字符的伪区,如PST、CST或IST。这些值不是标准化的,甚至不是唯一的!
Real time zone names的格式为Continent/ Region,如Africa/Tunis或Asia/Tokyo。对于美国西海岸大部分地区的时区,如果这就是你所说的PST,请使用America/Los_Angeles。
ZoneId z = ZoneId.of( "America/Los_Angeles" ) ; 永远不要使用糟糕的遗留日期-时间类,比如Calendar。仅使用java.time类。
ZonedDateTime zdt = ZonedDateTime.now( z ) ;生成标准ISO 8601格式的文本,通过将时区的名称附加在方括号中进行智能扩展。
String output = zdt.toString() ;本地化荷兰语和荷兰文化的文本表示。
Locale locale = new Locale( "nl" , "NL" ) ;
DateTimeFormatter f =
DateTimeFormatter
.ofLocalizedDateTime( FormatStyle.FULL )
.withLocale( locale )
;
String output = zdt.format( f ) ;请参阅此code run live at IdeOne.com。
太平洋2020-07-17T09:30:58.183568-07:00America/Los_Angeles vrijdag 17 juli 2020 om 09:30:58
-zomertijd
搜索以了解更多信息。所有这些都已经在Stack Overflow上被多次解决了。
发布于 2020-07-18 01:41:40
我没有得到正确的nl_NL格式
这是因为new Locale("nl_NL")错了。它必须是具有单独的language和country参数的,或者具有在值中使用短划线的languageTag参数的。它从来不带下划线。
这也是因为日期模式"mmm dd"是错误的。它必须是大写的M代表月份的,而不是代表分钟的小写。
最后,使用时区PST是错误的,因为它没有很好地定义。它的意思可以是“皮特凯恩标准时间”或“太平洋标准时间”,即使是第二个也是错误的,因为美国太平洋海岸目前正在遵守PDT (太平洋夏令时)。正确的时区是America/Los_Angeles。
将这些修复应用于问题代码:
Calendar calendar = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("MMM dd", new Locale("nl", "NL"));
df.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
String expectedDate = df.format(calendar.getTime()).toLowerCase();
System.out.println("Date in PST Timezone : " + expectedDate);输出
Date in PST Timezone : jul. 17当然,对于仅限日期的值,时区并不真正适用,但它确实存在。
但是,您应该使用较新的Java 8 Time API。
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("MMM dd", new Locale("nl", "NL"));
String date = MonthDay.now(ZoneId.of("America/Los_Angeles")).format(fmt);
System.out.println("Date : " + date);输出
Date : jul. 17您也可以使用LocaleDate.now(...)。
https://stackoverflow.com/questions/62956945
复制相似问题