Mdh*_*r9e 1 java milliseconds java.util.date
我有一个日期字段expiryDate,其值为Thu Nov 21 00:00:00 IST 2019但我试图通过从Thu Nov 20 23:59:59 IST 的时间中删除一毫秒来获取当天之前的 endDate 时间2019 年, 我们是否有任何方法可以从给定日期中删除毫秒。
避免使用从 JSR 310 开始遗留下来的糟糕的日期时间类。现在已被现代的java.time类取代。
\n\n\n\n您可以轻松地来回转换。调用添加到旧类中的新转换方法。
\n\nInstant instant = myJavaUtilDate.toInstant() ;\nRun Code Online (Sandbox Code Playgroud)\n\n然后又回来了。
\n\njava.util.Date myJavaUtilDate = Date.from( instant ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n减去一毫秒。
\n\nInstant oneMilliEarlier = instant.minusMillis( 1 ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n但我建议你不要采取这种方法。不要追踪时间跨度的最后一刻。
\n\n您尝试追踪一天中的最后一刻是有问题的。你正在失去最后一毫秒的时间。这样做会在第二天凌晨之前留下一个间隙。当切换到更精细的时间切片时,例如某些系统(例如 Postgres 等数据库)使用的微秒,以及其他软件(例如 java.time类)使用的纳秒,您会遇到更严重的问题。
\n\n更好的方法是日期时间处理中常用的半开放方法。时间跨度的开始是包容性的,而结束是排他性的。
\n\n因此,一整天从当天的第一时刻开始,通常是 00:00:00(但并非总是如此!),一直持续到(但不包括)第二天的第一时刻。
\n\nZoneId z = ZoneId.of( "Asia/Kolkata" ) ;\nZonedDateTime zdt = ZonedDateTime.now( z ) ;\nZonedDateTime start = zdt.toLocalDate().atStartOfDay( z ) ;\nZonedDateTime stop = start.plusDays( 1 ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n提示:要处理此类时间跨度,请添加ThreeTen-Extra库来访问该类Interval。
java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如java.util.Date, Calendar, & SimpleDateFormat。
要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
\n\nJoda -Time项目现在处于维护模式,建议迁移到java.time类。
\n\n您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC 驱动程序。不需要字符串,不需要类。java.sql.*
从哪里获取 java.time 类?
\n\nThreeTen -Extra项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如Interval、、、等等。YearWeekYearQuarter
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |