java 限制日期格式_Java日期格式

TL;博士

ZonedDateTime.parse (

"20110913T100702.631 GMT" ,

DateTimeFormatter.ofPattern( "uuuuMMdd'T'HH:mm:ss.SSS z" )

).format(

DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL , FormatStyle.SHORT )

.withLocale( Locale.US )

)

2011年9月13日星期二上午10:07

ISO 8601

您的输入字符串几乎符合定义为标准ISO 8601格式的“基本”版本的格式。单词basic意味着最大限度地减少ISO 8601格式的更常见“扩展”版本所使用的分隔符的使用。

String input = "20110913T100702.631 GMT" ;

使用java.time

其他Answers使用麻烦的旧遗留日期时间类,现在由java.time类取代。

在解析/生成字符串时,java.time类默认使用许多标准ISO 8601格式。因此通常不需要指定格式化模式。但默认情况下不支持此特定的基本格式,因此我们必须指定格式化模式。

DateTimeFormatter fInput = DateTimeFormatter.ofPattern ( "uuuuMMdd'T'HHmmss.SSS z" );

解析为ZonedDateTime。

ZonedDateTime zdt = ZonedDateTime.parse ( input, fInput );

要生成表示所需格式的ZonedDateTime对象值的字符串,可以定义指定的格式设置模式。但我建议你让java.time自动为你本地化。

要进行本地化,请指定:

FormatStyle确定字符串的长度或缩写。

Locale确定(a)翻译日期名称,月份名称等的人类语言,以及(b)决定缩写,大写,标点符号,分隔符等问题的文化规范

因此...

// Generate output string

Locale locale = Locale.US; // Or Locale.CANADA_FRENCH, Locale.ITALY, etc.

DateTimeFormatter fOutput =

DateTimeFormatter.ofLocalizedDateTime ( FormatStyle.FULL, FormatStyle.SHORT ) // Specify format style of date portion, then time-of-day portion.

.withLocale ( locale );

String output = zdt.format ( fOutput );

转储到控制台。

// Dump to console

System.out.println ( "input: " + input );

System.out.println ( "zdt.toString(): " + zdt );

System.out.println ( "output: " + output );

输入:20110913T100702.631 GMT

zdt.toString():2011-09-13T10:07:02.631Z [GMT]

输出:2011年9月13日星期二上午10:07

关于java.time

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。

从哪里获取java.time类?

Java SE 8,Java SE 9以及之后

内置。

带有捆绑实现的标准Java API的一部分。

Java 9增加了一些小功能和修复。

Java SE 6和Java SE 7

大部分java.time功能都被反向移植到Java 6& 7 {in ThreeTen-Backport。

Android

ThreeTenABP项目专门为Android调整ThreeTen-Backport(如上所述)。

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval,YearWeek,YearQuarter和more。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值