如何将字符串转换为特定时区的DateTime,保留日期恰好是该时区的日期?

时间:2015-08-30 21:43:51

标签: java parsing timezone jodatime

我已经构建了一个以字符串格式和时区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的部分;有没有办法以不同的方式实现这一目标?

1 个答案:

答案 0 :(得分:0)

只需设置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;