Java Entity - storing dates
如何在我的实体中以此格式
但是我必须从String中解析它。
1 2 3 4 5 6 | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { today = dateFormat.parse("2017-04-14"); } catch (ParseException e) { //catch exception } |
我得到:
试试下面的代码
进口
1 2 3 4 5 | import com.mysql.jdbc.StringUtils; import java.sql.Timestamp; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; |
yourObjectModel和yourObjectTO对象
解析输入
1 2 3 | if (!StringUtils.isNullOrEmpty(yourObjectTO.getDate())) { yourObjectModel.setDate(convertStringToTimestamp(yourObjectTO.getDate())); } |
util方法进行转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static Timestamp convertStringToTimestamp(String strDate) { String format ="dd/MM/yyyy"; if(strDate.contains("-")) { format ="yyyy-MM-dd"; } DateTimeFormatter DATE_TME_FORMATTER = new DateTimeFormatterBuilder().appendPattern(format) .parseDefaulting(ChronoField.HOUR_OF_DAY, 0) .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0) .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0) .toFormatter(); LocalDate dt = LocalDate.parse(strDate.substring(0, 10), DATE_TME_FORMATTER); Timestamp timestamp = Timestamp.valueOf(dt.atStartOfDay()); return timestamp; } |
TL;博士
1 | LocalDate.parse("2017-04-14" ) |
使用java.time
您使用的是错误的类。
避免麻烦的旧遗留类,如
ISO 8601
您的输入符合ISO 8601标准。在解析/生成字符串时,java.time类默认使用这些标准格式。因此无需指定格式化模式。
1 | LocalDate ld = LocalDate.parse("2017-04-14" ); |
要以相同格式生成字符串,请调用
1 |
不要将字符串与日期时间对象混淆。可以通过解析字符串来创建日期时间对象。日期时间对象可以生成表示其值的字符串。但是字符串和日期时间总是分开且不同的。
问题的第一行使用不同的格式。我希望这是一个错误。您应尽可能坚持使用ISO 8601格式,尤其是在序列化数据交换时。
如果您真的想要其他格式,请搜索
关于java.time
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
-
Java SE 8,Java SE 9及更高版本
- 内置。
- 带有捆绑实现的标准Java API的一部分。
- Java 9增加了一些小功能和修复。
-
Java SE 6和Java SE 7
- 许多java.time功能都被反向移植到Java 6& 7在ThreeTen-Backport。
-
Android的
- ThreeTenABP项目特别适用于Android的ThreeTen-Backport(如上所述)。
- 请参见如何使用ThreeTenABP ....
ThreeTen-Extra项目使用其他类扩展了java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的类,例如