我想将字符串解析为 DateTime 对象:
DateTimeFormatter fmt = DateTimeFormat.forPattern("M/d/yyyy HH:mm");
DateTime dt = fmt.parseDateTime(stringDate + " " + stringTime).withZone(DateTimeZone.forID("Europe/Dublin"));
如果我介绍时间 06/22/2014 10:43 我就明白了
2014/06/22 8:43 +0100,
但我想得到
2014/06/22 10:43 +0100
我该怎么做?
您应该将时区应用于格式化程序,而不是
DateTime
。否则,日期将已经在您当地的时区中解析,您只需将其转换为您想要的时区。
DateTimeFormatter fmt = DateTimeFormat.forPattern("M/d/yyyy HH:mm")
.withZone(DateTimeZone.forID("Europe/Dublin"));
DateTime dt = fmt.parseDateTime("06/22/2014 10:43");
看这个扩展代码:
String s = "06/22/2014 10:43";
DateTimeFormatter fmt = DateTimeFormat.forPattern("M/d/yyyy HH:mm"); // uses local zone
DateTime dt1 = fmt.parseDateTime(s).withZone(DateTimeZone.forID("Europe/Dublin"));
DateTime dt2 = fmt.withZone(DateTimeZone.forID("Europe/Dublin")).parseDateTime(s);
DateTime dt3 =
fmt.parseDateTime(s).withZoneRetainFields(DateTimeZone.forID("Europe/Dublin"));
System.out.println(dt1); // 2014-06-22T09:43:00.000+01:00 (from my zone Berlin to Dublin)
System.out.println(dt2); // 2014-06-22T10:43:00.000+01:00
System.out.println(dt3); // 2014-06-22T10:43:00.000+01:00
java.time
以下为Joda-Time主页上的通知:
请注意,从 Java SE 8 开始,用户被要求迁移到
(JSR-310) - JDK 的核心部分,它取代了这个 项目。java.time
您的日期时间字符串,
06/22/2014 10:43
没有时区信息;因此,将其解析为 LocalDateTime
对象,然后使用 LocalDateTime#atZone
. 添加时区信息。
演示:
public class Main {
public static void main(String[] args) {
DateTimeFormatter parser = DateTimeFormatter.ofPattern("M/d/yyyy HH:mm");
LocalDateTime ldt = LocalDateTime.parse("06/22/2014 10:43", parser);
System.out.println(ldt);
ZonedDateTime zdt = ldt.atZone(ZoneId.of("Europe/Dublin"));
System.out.println(zdt);
// If you need just the time zone offset
OffsetDateTime odt = zdt.toOffsetDateTime();
System.out.println(odt);
// Custom formatting
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm Z");
String formatted = odt.format(formatter);
System.out.println(formatted);
}
}
输出:
2014-06-22T10:43+01:00[Europe/Dublin]
2014-06-22T10:43+01:00[Europe/Dublin]
2014-06-22T10:43+01:00
06/22/2014 10:43 +0100
从 Trail:日期时间了解有关现代日期时间 API 的更多信息。