java - JodaTime 月底转换
问题描述
我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));
这给我留下了输出:
好的结果:2018-10-28T00:00:00.000+02:00
错误的结果:2018-10-28T23:00:00.000+01:00
到月底、29 日、30 日、31 日为止的所有日子都像 28 日。其余日子还好。有人可以帮我理解这里发生了什么吗?我犯的错误在哪里?
解决方案
呃。您在该日期指定了 DST 更改的时区,因此可以按预期工作。
如果要输入本地日期时间,则不希望 Z 采用您的格式。
推荐阅读
- c# - C# 字符串数组元素不更新
- java - 如何在 hql 请求中正确调用枚举方法?numberClass 和 symbolClass 是一个枚举
- java - 在 Java 中生成 XML 有效负载的最有效方法
- java - Android ListAdapter.getItemCount() 总是返回 0
- javascript - 获取用户在 EJS 中选择的表详细信息?
- javascript - cookie 何时被视为第三方 cookie?
- sql - 编写查询以查找从 10 月到 11 月因购买而产生的收入变化
- r - Datatable 显示 empy selectInput 而默认选择值
- c# - LinqToSql 等价于 IN
- php - tFPDF - 在标题中显示 mySQL 结果