JodaTime 月末转换
JodaTime conversion by the end of the month
我非常直接地 DateConverter
使用将 String
转换为 org.joda.time.DateTime
的方法
public class DateConverter {
private static final DateTimeFormatter DATE_TIME_FORMATTER =
DateTimeFormat
.forPattern( "yyyy-MM-dd HH:mm:ss Z")
.withZone( DateTimeZone.forID("Europe/Warsaw") );
public static DateTime toDateTime(String value) {
return DateTime.parse(value, DATE_TIME_FORMATTER);
}
}
现在测试一下,
String okDate = "2018-10-28 00:00:00 +0200";
String wrongDate = "2018-10-29 00:00:00 +0200";
System.out.println("Ok result: " + DateConverter.toDateTime(okDate));
System.out.println("Wrong result: " + DateConverter.toDateTime(wrongDate));
这给我留下了输出:
Ok result: 2018-10-28T00:00:00.000+02:00
Wrong result:
2018-10-28T23:00:00.000+01:00
到月底的所有日子,29日、30日、31日和28日一样。其余日子还好。有人可以帮助我了解这里发生了什么吗?我犯的错误在哪里?
呃。您指定了一个在该日期更改夏令时的时区,因此按预期工作。
如果您想输入本地日期时间,则不需要格式中的 Z。
我非常直接地 DateConverter
使用将 String
转换为 org.joda.time.DateTime
public class DateConverter {
private static final DateTimeFormatter DATE_TIME_FORMATTER =
DateTimeFormat
.forPattern( "yyyy-MM-dd HH:mm:ss Z")
.withZone( DateTimeZone.forID("Europe/Warsaw") );
public static DateTime toDateTime(String value) {
return DateTime.parse(value, DATE_TIME_FORMATTER);
}
}
现在测试一下,
String okDate = "2018-10-28 00:00:00 +0200";
String wrongDate = "2018-10-29 00:00:00 +0200";
System.out.println("Ok result: " + DateConverter.toDateTime(okDate));
System.out.println("Wrong result: " + DateConverter.toDateTime(wrongDate));
这给我留下了输出:
Ok result: 2018-10-28T00:00:00.000+02:00
Wrong result: 2018-10-28T23:00:00.000+01:00
到月底的所有日子,29日、30日、31日和28日一样。其余日子还好。有人可以帮助我了解这里发生了什么吗?我犯的错误在哪里?
呃。您指定了一个在该日期更改夏令时的时区,因此按预期工作。
如果您想输入本地日期时间,则不需要格式中的 Z。