我在 java 中解析日期时间时遇到问题,我有一个奇怪的日期时间格式。如何在java中解析2013-04-03T17:04:39.9430000+03:00
日期时间以在java中格式化dd.MM.yyyy HH:mm
?
问问题
14519 次
4 回答
17
有问题的“奇怪”格式是ISO-8601 - 它使用非常广泛。您可以使用SimpleDateFormat以您喜欢的大多数方式重新格式化它:
SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
DateTime dtIn = inFormat.parse(dateString}); //where dateString is a date in ISO-8601 format
SimpleDateFormat outFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm");
String dtOut = outFormat.format(dtIn);
//parse it into a DateTime object if you need to interact with it as such
会给你你提到的格式。
于 2013-05-02T11:28:03.220 回答
11
于 2016-05-21T05:03:30.447 回答
0
对于在 java 中处理日期和时间的严肃工作,我建议使用比Calendar更好的实现。我会使用Joda,您可以在其中使用DateTimeFormatter
于 2013-05-02T11:21:59.453 回答
0
请使用此方法在没有任何库的情况下解析 ISO8601 日期。 http://www.java2s.com/Code/Java/Data-Type/ISO8601dateparsingutility.htm
public static Date parseISO8601Date(String input ) throws java.text.ParseException {
//NOTE: SimpleDateFormat uses GMT[-+]hh:mm for the TZ which breaks
//things a bit. Before we go on we have to repair this.
SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssz" );
//this is zero time so we need to add that TZ indicator for
if ( input.endsWith( "Z" ) ) {
input = input.substring( 0, input.length() - 1) + "GMT-00:00";
} else {
int inset = 6;
String s0 = input.substring( 0, input.length() - inset );
String s1 = input.substring( input.length() - inset, input.length() );
input = s0 + "GMT" + s1;
}
return df.parse( input );
}
于 2016-09-09T11:34:11.273 回答