import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
DateTimeFormatter utcFormatter = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss zzz yyyy");
DateTime dateTime1 = utcFormatter.parseDateTime("Thu Mar 28 12:26:50 UTC 2019");
DateTimeZone istZone = DateTimeZone.forID("Asia/Kolkata");
DateTimeFormatter istFormatter = utcFormatter.withZone(istZone);
String dtstrIndiaTimezone = istFormatter.print(dateTime1);
System.out.println(dtstrIndiaTimezone);
DateTime dateTime2 = istFormatter.parseDateTime(dtstrIndiaTimezone);// throws exception
// System.out.println(dateTime2);
}
}
执行上面给出的代码会在IST中显示日期时间字符串,但是在尝试解析时会抛出以下异常:
Thu Mar 28 17:56:50 IST 2019
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "Thu Mar 28 17:56:50 IST 2019" is malformed at "IST 2019"
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:945)
at Main.main(Main.java:16)
如何做? API中的错误吗?
注意:我知道如何使用java.time
类来做到这一点。