首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取nl_NL语言环境下的"mmm dd“格式的日期?

如何获取nl_NL语言环境下的"mmm dd“格式的日期?
EN

Stack Overflow用户
提问于 2020-07-17 23:18:12
回答 2查看 337关注 0票数 0

我想在nl_NL语言环境下使用jave获取日期

代码语言:javascript
复制
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格式!

有没有人能帮帮我?

EN

回答 2

Stack Overflow用户

发布于 2020-07-18 01:05:31

切勿使用2-4个字符的伪区,如PSTCSTIST。这些值不是标准化的,甚至不是唯一的!

Real time zone names的格式为Continent/ Region,如Africa/TunisAsia/Tokyo。对于美国西海岸大部分地区的时区,如果这就是你所说的PST,请使用America/Los_Angeles

代码语言:javascript
复制
ZoneId z = ZoneId.of( "America/Los_Angeles" ) ; 

永远不要使用糟糕的遗留日期-时间类,比如Calendar。仅使用java.time类。

代码语言:javascript
复制
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

生成标准ISO 8601格式的文本,通过将时区的名称附加在方括号中进行智能扩展。

代码语言:javascript
复制
String output = zdt.toString() ;

本地化荷兰语和荷兰文化的文本表示。

代码语言:javascript
复制
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上被多次解决了。

票数 3
EN

Stack Overflow用户

发布于 2020-07-18 01:41:40

我没有得到正确的nl_NL格式

这是因为new Locale("nl_NL")错了。它必须是具有单独的languagecountry参数的,或者具有在值中使用短划线的languageTag参数的。它从来不带下划线。

这也是因为日期模式"mmm dd"是错误的。它必须是大写的M代表月份的,而不是代表分钟的小写。

最后,使用时区PST是错误的,因为它没有很好地定义。它的意思可以是“皮特凯恩标准时间”或“太平洋标准时间”,即使是第二个也是错误的,因为美国太平洋海岸目前正在遵守PDT (太平洋夏令时)。正确的时区是America/Los_Angeles

将这些修复应用于问题代码:

代码语言:javascript
复制
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);

输出

代码语言:javascript
复制
Date in PST Timezone : jul. 17

当然,对于仅限日期的值,时区并不真正适用,但它确实存在。

但是,您应该使用较新的Java 8 Time API。

代码语言:javascript
复制
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);

输出

代码语言:javascript
复制
Date : jul. 17

您也可以使用LocaleDate.now(...)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62956945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档