如何将字符串转换为特定时区的 DateTime,并准确保留该时区的日期?
How can I convert a string into a DateTime for a specific timezone, preserving the date exactly is it comes for that timezone?
我构建了一个函数,它接收字符串格式的日期和时区 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;
我构建了一个函数,它接收字符串格式的日期和时区 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;