java - java 8 新的日期/时间 API 获取一年中的第一天
问题描述
使用 java 7,我们可以得到一年中的第一天
Calendar currentCal = Calendar.getInstance();
currentCal.set(Calendar.DAY_OF_YEAR, 1);
currentCal.set(Calendar.MONTH, 0);
currentCal.set(Calendar.DAY_OF_MONTH, 1);
currentCal.set(Calendar.HOUR_OF_DAY, 0);
currentCal.set(Calendar.MINUTE, 0);
currentCal.set(Calendar.SECOND, 0);
currentCal.set(Calendar.MILLISECOND, 0);
//currentCal.getTime();
如何在 java 8 new Date/Time API 中像这样获得一年中的第一天?
解决方案
LocalDate firstDayOfThisYear = Year.now(ZoneId.systemDefault()).atDay(1);
System.out.println(firstDayOfThisYear);
我刚才运行的输出:
2021-01-01
该类Year
在旧的日期时间 API 中没有相应的表示形式,但对于这种情况很方便。
您可能已经知道,aLocalDate
是没有时间的日期。既然你要求一年的第一天,我认为这门课适合你。对于旧课程,我们将被迫也决定一天中的时间。使用 java.time 我们不是。如果您确实需要一天中的某个时间,您可能希望转换为ZonedDateTime
( OffsetDateTime
,Instant
并且LocalDateTime
是其他选项,具体取决于您的精确要求)。
您需要选择一个时区,因为新年不会在所有时区同时发生。在极端情况下,如果您使用了不正确的时区,您的结果将是一整年。我假设您的 JVM 的默认时区很好。使用时区 ID 可能更安全,例如ZoneId.of("Asia/Ho_Chi_Minh")
.
推荐阅读
- c++ - FreeRTOS 仅在 Release 中崩溃
- javascript - ReactJS 上的预检响应无效(重定向)
- mysql - Mysql,行到列的动态查询
- swift - 在三角形内平均分布 MTLTexture
- amazon-web-services - 如何使用 ParlAi 和 MTurk 运行 HIT 任务
- java - Java Runtime.exec 在 linux 中因空间而失败
- android - 我想通过我的应用启动谷歌地图通过意图启动驾驶模式
- python - 没有反斜杠的 Python JSON 编写
- zsh - zsh - 如何在执行无效命令时自动重置会话;避免“断管”消息
- c# - NHibernate - 条目永远不会被保存到 Nhibernate 中的数据库中