【问题标题】:How can I convert a string into a DateTime for a specific timezone, preserving the date exactly is it comes for that timezone?如何将字符串转换为特定时区的 DateTime,准确保留该时区的日期?
【发布时间】:2015-11-24 21:49:48
【问题描述】:

我已经构建了一个函数,它接收字符串格式的日期和时区 ID,并将该日期转换为时区时间:

public static DateTime transformSrcTimeInTzTime(String timeAsString, String timezoneId){
    DateTimeZone zone = DateTimeZone.forID(timezoneId);
    DateTimeZone.setDefault(zone);
    DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
    DateTime tzDate = formatter.parseDateTime(timeAsString);
    System.out.println("++++ timeAsString: " + tzDate.toString(formatter));
    DateTimeZone.setDefault(DateTimeZone.forID(Constants.SERVER_TIMEZONE));
    return tzDate;
}

我不喜欢DateTimeZone.setDefault 的部分;有什么方法可以不同地实现这一目标吗?

【问题讨论】:

    标签: java parsing timezone jodatime


    【解决方案1】:

    只需设置DateTimeFormatter 本身的区域。

    DateTimeZone zone = DateTimeZone.forID(timezoneId);
    DateTimeFormatter formatter = DateTimeFormat
                          .forPattern("dd/MM/yyyy HH:mm:ss")
                          .withZone(zone);
    DateTime tzDate = formatter.parseDateTime(timeAsString).withZone(zone);
    return tzDate;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-14
      • 2020-01-20
      • 1970-01-01
      • 2020-01-20
      • 2017-01-15
      • 2017-09-10
      • 1970-01-01
      • 2015-04-15
      相关资源
      最近更新 更多