繁体   English   中英

Java中的时区日期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM