是否有一种简单的方法可以将以下两种类型的String解析为Java中的日期
2013-11-22T18:37:55.645+0000
2013-11-22T14:20:30.645Z
两者意味着相同的事情,但我不得不使用2种不同的日期格式模式
yyyy-MM-dd'T'HH:mm:ss.SSSZ
yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
我想只用1种模式来做。
答案 0 :(得分:1)
是的,有一种叫做SimpleDateFormat
的简单方法。将您的格式发送到此类的构造函数并根据您的规范格式化日期。
答案 1 :(得分:1)
您的两种格式都是ISO 8601的变体。
轻松Joda-Time 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
方法。对于用户的默认时区,只需省略任何时区调用。
答案 2 :(得分:0)
你试过这个:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
Date dt1 = sdf.parse(str1);