Java 获取昨天0点的时间、今天0点的时间

/**
 * 获得当天零时零分零秒
 * @return
 */
public static Date initDateByDay() {
   
   
	Calendar calendar = Calendar.getInstance();
	calendar.setTime(new Date())
Java 中,可以通过以下步骤获取昨天晚上 11 (23:00)到今天晚上 11 (23:00)的 `Date` 时间。 首先,使用 `Calendar` 类来进行日期和时间的操作。`Calendar` 类是 Java 中用于处理日期和时间的工具类,可以方便地进行日期的加减和获取特定时间。 以下是实现代码: ```java import java.util.Calendar; import java.util.Date; public class DateRangeExample { public static void main(String[] args) { // 获取当前时间的 Calendar 实例 Calendar calendar = Calendar.getInstance(); // 设置为昨天晚上 11 calendar.add(Calendar.DAY_OF_YEAR, -1); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date startDate = calendar.getTime(); // 恢复到今天 calendar.add(Calendar.DAY_OF_YEAR, 1); Date endDate = calendar.getTime(); System.out.println("昨天晚上 11 : " + startDate); System.out.println("今天晚上 11 : " + endDate); } } ``` 在上述代码中,首先获取当前时间的 `Calendar` 实例。然后,通过 `add(Calendar.DAY_OF_YEAR, -1)` 方法将日期设置为昨天,接着使用 `set` 方法将时间设置为 23:00:00。通过 `getTime()` 方法获取 `Date` 类型的开始时间。之后,再将日期加一天,获取 `Date` 类型的结束时间。 另外,从 Java 8 开始,Java 引入了新的日期和时间 API(`java.time` 包),使用新的 API 可以更简洁地实现相同的功能: ```java import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; public class DateRangeExampleJava8 { public static void main(String[] args) { // 获取昨天晚上 11 LocalDateTime startDateTime = LocalDateTime.now().minusDays(1).withHour(23).withMinute(0).withSecond(0).withNano(0); Date startDate = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()); // 获取今天晚上 11 LocalDateTime endDateTime = LocalDateTime.now().withHour(23).withMinute(0).withSecond(0).withNano(0); Date endDate = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant()); System.out.println("昨天晚上 11 : " + startDate); System.out.println("今天晚上 11 : " + endDate); } } ``` 在新的 API 中,使用 `LocalDateTime` 类来处理日期和时间,通过 `minusDays(1)` 方法将日期设置为昨天,使用 `with` 系列方法设置具体的时间。最后,通过 `atZone` 和 `toInstant` 方法将 `LocalDateTime` 转换为 `Date` 类型。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值