我想将一个字符串解析为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我得到
06/22/2014 8:43 +0100,
但我想得到
06/22/2014 10:43 +0100
我该怎么做?
答案 0 :(得分:9)
您应该将时区应用于格式化程序,而不是DateTime
。否则,日期将在您当地的时区中进行解析,而您只需将其转置到所需的时区。
DateTimeFormatter fmt = DateTimeFormat.forPattern("M/d/yyyy HH:mm")
.withZone(DateTimeZone.forID("Europe/Dublin"));
DateTime dt = fmt.parseDateTime("06/22/2014 10:43");
答案 1 :(得分:1)
看看这个扩展代码:
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