[英]Date with Timezone in Java
“2014-01-02T23:03:30-05:00”的简单日期格式是什么?
我用google搜索了格式,yyyy-MM-dd'T'HH:mm:ssz。 但是这种格式仅在我的日期格式最后没有冒号时才起作用“2014-01-02T23:03:30-0500”。
有人可以就此提出建议吗?
如果使用Java 7,则可以用X
替换z
以允许冒号分隔符: yyyy-MM-dd'T'HH:mm:ssX
。
另见javadoc 。
在Java 7之前,您需要先通过删除冒号手动解析它,或者使用外部库(如Jodatime或threeten)。
ISO 8601 timezone
有字母X
import java.text.*;
import java.util.*;
public class TimeZoneTest {
public static void main(final String[] args) throws ParseException {
final DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
final String string = "2014-01-02T23:03:30-05:00";
final Date date = format.parse(string);
System.out.println(date);
}
}
仅供参考,您可以将该字符串直接传递给Joda-Time 2.3中的构造函数。 不需要格式化程序。 Joda-Time使用标准的ISO 8601格式作为默认格式,甚至可以容忍偏移中缺少冒号。
不像我在下面的示例代码中那样传递DateTimeZone.UTC
,而是传递您感兴趣的特定时区。
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;
String string = "2014-01-02T23:03:30-0500";
DateTime dateTime = new DateTime( string, DateTimeZone.UTC );
System.out.println( "dateTime: " + dateTime );
运行时:
dateTime: 2014-01-03T04:03:30.000Z
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.