【问题标题】:How can I set timezone UTC+2?如何设置时区 UTC+2?
【发布时间】:2014-03-30 21:25:46
【问题描述】:

我已经搜索了很多次,但我没有找到我真正需要的东西, 我写这篇文章是为了找到 UTC 时区:

 DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
        df.setTimeZone(TimeZone.getTimeZone("Europe/Istanbul"));
        String gmtTime = df.format(new Date());
        Date gmtTime_ =null;
        try {
            gmtTime_ = df.parse(gmtTime);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  

但我需要UTC+2 时区,我怎样才能得到那个时区?

【问题讨论】:

  • TimeZone.getTimeZone("Etc/GMT+2")(见list
  • TimeZone.getTimeZone("Europe/Sofia")
  • 感谢您的回答,关于伊斯坦布尔有两种不同的选择,Asia/IstanbulEurope/Istanbul,但它们都是同一时间,是java 我选择哪一个?
  • 我编辑了我的问题,所以我必须将 Locale.getDefault() 写入我的 simpledateformat 吗?
  • 顺便说一下,时区偏移的小时(和可选的分钟)必须是两位数。使用+2 而不是+02 会给你带来悲伤。

标签: java android date-format android-date


【解决方案1】:

如果您愿意切换到一个不错的日期时间库,而不是与 Java 捆绑在一起的臭名昭著的麻烦 java.util.Date 和 java.util.Calendar 类,请阅读下面的示例代码。

两个不错的 Java 库是 Joda-Time 和与 Java 8 捆绑在一起的新 java.time package(受 Joda-Time 启发,由 JSR 310 定义)。

乔达时间

这是一些使用 Joda-Time 2.3 的示例代码。

java.util.Date date = new java.util.Date();

// Convert a Date into a Joda-Time DateTime.
// Specify a time zone rather than rely on default.
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Istanbul" );
DateTime dateTime = new DateTime( date, timeZone );
DateTime dateTimeUtc = dateTime.withZone( DateTimeZone.UTC );

转储到控制台…

System.out.println( "date: " + date );
System.out.println( "dateTime: " + dateTime );
System.out.println( "dateTimeUtc: " + dateTimeUtc );

运行时……

date: Mon Mar 31 08:13:37 PDT 2014
dateTime: 2014-03-31T18:13:37.314+03:00
dateTimeUtc: 2014-03-31T15:13:37.314Z

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2017-10-10
    相关资源
    最近更新 更多