使用乔达时间将一个时区转换为另一个时区
我已经做了一个功能,通过使用乔达时间从一个时区转换到另一个时区,但功能不接受日期
我已将以下参数传递给此功能"Asia/Kolkata"
, "UTC"
, "12-Dec-2014 12:30"
。 它抛出以下异常:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "12-Dec-2014 12:32" is malformed at "-Dec-2014 12:32"
at org.joda.time.format.DateTimeFormatter.parseMillis(DateTimeFormatter.java:752)
at org.joda.time.convert.StringConverter.getInstantMillis(StringConverter.java:65)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:150)
at org.joda.time.DateTime.<init>(DateTime.java:265)
at Dtime.convertTimeZones(Dtime.java:17)
at Dtime.main(Dtime.java:9)
代码如下:
public static String convertTimeZones( String fromTimeZoneString,
String toTimeZoneString, String fromDateTime) {
DateTimeZone fromTimeZone = DateTimeZone.forID(fromTimeZoneString);
DateTimeZone toTimeZone = DateTimeZone.forID(toTimeZoneString);
DateTime dateTime = new DateTime(fromDateTime, fromTimeZone);
DateTimeFormatter outputFormatter =
DateTimeFormat.forPattern("dd-MMM-yyyy HH:mm").withZone(toTimeZone);
return outputFormatter.print(dateTime);
}
夏令时(日光节约)
我在这个日期通过参数(“ 美国/丹佛 ”,“ GMT ”,“ 09-Mar-2014 02:00 ”), DST将开始
为丹佛
周日,2014年3月9日,02:00时钟向前转1小时到
周日,2014年3月9日03:00:00当地白天时间
但它抛出了异常
例外
Exception in thread "main" java.lang.IllegalArgumentException: Cannot parse "09-Mar-2014 02:00": Illegal instant due to time zone offset transition (America/Denver)
at org.joda.time.format.DateTimeParserBucket.computeMillis(DateTimeParserBucket.java:390)
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:849)
at timeZone.convertTimeZones(timeZone.java:23)
at timeZone.main(timeZone.java:14)
你需要用inputFormatter
解析你的日期(就像你已经定义的outputFormatter
一样)。 像这样的东西
DateTimeFormatter inputFormatter = DateTimeFormat.forPattern(
"dd-MMM-yyyy HH:mm").withZone(fromTimeZone);
DateTime dateTime = inputFormatter.parseDateTime(fromDateTime);
我测试过,并输出
12-Dec-2014 07:00
链接地址: http://www.djcxy.com/p/18525.html
上一篇: converting one time zone to another using joda time
下一篇: Time's DateMidnight