java date类型获取当天0点和最后一秒时间
时间: 2024-10-18 17:14:37 浏览: 89
Java将日期类型Date时间戳转换为MongoDB的时间类型数据
在Java中,你可以使用`java.util.Calendar`或`java.time`包来获取当前日期的0点(开始一天的时间)和最后一秒(结束一天的时间)。以下是两个示例:
**使用Calendar:**
```java
import java.util.Calendar;
public class DateExample {
public static void main(String[] args) {
// 获取当天0点
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0); // 确保毫秒为0
long startDate = calendar.getTimeInMillis();
// 获取前一天的最后一秒
calendar.add(Calendar.DAY_OF_MONTH, -1);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999); // 设置为最后的一秒
long endDate = calendar.getTimeInMillis();
System.out.println("Start of today: " + new Date(startDate));
System.out.println("End of yesterday: " + new Date(endDate));
}
}
```
**使用java.time:**
```java
import java.time.LocalDateTime;
import java.time.ZoneOffset;
public class DateExample {
public static void main(String[] args) {
// 获取当天0点
LocalDateTime startOfDay = LocalDateTime.now().atStartOfDay(ZoneOffset.UTC);
long startOfDayMillis = startOfDay.toInstant().toEpochMilli();
// 获取前一天的最后一秒
LocalDateTime endOfYesterday = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.MAX);
long endOfYesterdayMillis = endOfYesterday.minusSeconds(1).toInstant(ZoneOffset.UTC).toEpochMilli();
System.out.println("Start of today: " + LocalDateTime.ofInstant(Instant.ofEpochMilli(startOfDayMillis), ZoneOffset.UTC));
System.out.println("End of yesterday: " + LocalDateTime.ofInstant(Instant.ofEpochMilli(endOfYesterdayMillis), ZoneOffset.UTC));
}
}
```
在这两个例子中,都注意了处理闰秒的情况,即`LocalTime.MAX`用于表示一天的结束,这会自动包含可能的额外秒。
阅读全文