Java 如何将字符串转换为特定时区的DateTime,保留该时区的确切日期?

Java 如何将字符串转换为特定时区的DateTime,保留该时区的确切日期?,java,parsing,timezone,jodatime,Java,Parsing,Timezone,Jodatime,我构建了一个函数,用于接收字符串格式的日期和时区id,并在时区时间中转换该日期: public static DateTime transformSrcTimeInTzTime(String timeAsString, String timezoneId){ DateTimeZone zone = DateTimeZone.forID(timezoneId); DateTimeZone.setDefault(zone); DateTimeFormatter formatt

我构建了一个函数,用于接收字符串格式的日期和时区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
的部分;有什么不同的方法来实现这一点吗?

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