是否有一种简单的方法在Java中解析以下2种类型的字符串
2013-11-22T18:37:55.645+0000
2013-11-22T14:20:30.645Z
两者的含义相同,但我不得不使用两种不同的日期格式模式。
yyyy-MM-dd'T'HH:mm:ss.SSSZ
yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
我只想用一个模式来做。
发布于 2013-11-26 05:46:26
您的两种格式模式都是相同的变体,ISO 8601。
在尤达-时间 2.3中很简单。
一行代码,使用Joda-Time的内置ISO 8601格式化程序。该格式化程序处理两个偏移量,要么是零,要么是Z
。
org.joda.time.format.ISODateTimeFormat.dateTime().withZoneUTC().parseDateTime( eitherStringGoesHere );
更详细的代码…
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
String dateTimeStringZero = "2013-11-22T18:37:55.645+0000";
String dateTimeStringZulu = "2013-11-22T18:37:55.645Z";
org.joda.time.DateTime dateTimeZero = org.joda.time.format.ISODateTimeFormat.dateTime().withZoneUTC().parseDateTime( dateTimeStringZero );
org.joda.time.DateTime dateTimeZulu = org.joda.time.format.ISODateTimeFormat.dateTime().withZoneUTC().parseDateTime( dateTimeStringZulu );
输出…
System.out.println( "dateTimeZero: " + dateTimeZero );
System.out.println( "dateTimeZulu: " + dateTimeZulu );
运行…时
dateTimeZero: 2013-11-22T18:37:55.645Z
dateTimeZulu: 2013-11-22T18:37:55.645Z
如果您想要一个时间分区的DateTime,请更改withZoneUTC()
。请参阅withZone
方法。对于用户的默认时区,只需省略任何时区调用。
发布于 2013-11-25 20:21:51
你试过这个吗?
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
Date dt1 = sdf.parse(str1);
https://stackoverflow.com/questions/20202113
复制相似问题