我在解析时间瞬间时在 JodaTime 中发现了某种不当行为。
DateTimeFormatter dateStringFormat =
DateTimeFormat.forPattern("EEE MMM dd kk:mm:ss 'GMT'Z yyyy");
DateTime startTime = dateStringFormat.withOffsetParsed().
parseDateTime("Tue Jan 01 09:30:00 GMT+2000 2013");
DateTime endTime = dateStringFormat.withOffsetParsed().
parseDateTime("Tue Jan 05 10:31:00 GMT+2000 2013");
Period period = new Period(startTime, endTime);
PeriodFormatter formatter = new PeriodFormatterBuilder().appendDays()
.appendSuffix(" day ", " days")
.appendHours()
.appendSuffix(" hour ", " hours")
.appendMinutes()
.appendSuffix(" minute", " minutes")
.toFormatter();
System.out.println(formatter.print(period));
输出是:“1小时1分钟”
“天”部分在哪里?
此代码的 Basil Bourque 版本……
在第二个 DateTime 中,日期莫名其妙地被解析为 01 而不是 05。
DateTimeFormatter dateStringFormat = DateTimeFormat.forPattern("EEE MMM dd kk:mm:ss 'GMT'Z yyyy");
DateTime startTime = dateStringFormat.withOffsetParsed().parseDateTime("Tue Jan 01 09:30:00 GMT+2000 2013");
DateTime endTime = dateStringFormat.withOffsetParsed().parseDateTime("Tue Jan 05 10:31:00 GMT+2000 2013");
转储到控制台...
System.out.println( "startTime: " + startTime );
System.out.println( "endTime: " + endTime );
运行时...
startTime: 2013-01-01T09:30:00.000+20:00
endTime: 2013-01-01T10:31:00.000+20:00
最佳答案
两个日期都是星期二。如果您更正此并将 2013 年 1 月 5 日设置为星期六(原样),那么它会起作用:
DateTime startTime = dateStringFormat.withOffsetParsed().parseDateTime("Tue Jan 01 09:30:00 GMT+2000 2013");
DateTime endTime = dateStringFormat.withOffsetParsed().parseDateTime("Sat Jan 05 10:31:00 GMT+2000 2013");
似乎无法使用 Joda Time 检查日期是否有效:
关于java - 乔达时期不是打印日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21087575/