首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何创建今天午夜和明天午夜的Java Date对象?

如何创建今天午夜和明天午夜的Java Date对象?
EN

Stack Overflow用户
提问于 2011-07-28 04:34:19
回答 15查看 260.6K关注 0票数 208

在我的代码中,我需要找到今天发生的所有事情。因此,我需要比较从今天凌晨00:00 (今天凌晨)到下午12:00 (今晚午夜)的日期。

我知道..。

代码语言:javascript
复制
Date today = new Date(); 

..。我现在就明白了。还有..。

代码语言:javascript
复制
Date beginning = new Date(0);

..。在1970年1月1日给我的时间是零。但是,有什么简单的方法可以让你今天零时间,明天零时间呢?

更新

我这么做了,但肯定有更简单的方法吧?

代码语言:javascript
复制
Calendar calStart = new GregorianCalendar();
calStart.setTime(new Date());
calStart.set(Calendar.HOUR_OF_DAY, 0);
calStart.set(Calendar.MINUTE, 0);
calStart.set(Calendar.SECOND, 0);
calStart.set(Calendar.MILLISECOND, 0);
Date midnightYesterday = calStart.getTime();
            
Calendar calEnd = new GregorianCalendar();
calEnd.setTime(new Date());
calEnd.set(Calendar.DAY_OF_YEAR, calEnd.get(Calendar.DAY_OF_YEAR)+1);
calEnd.set(Calendar.HOUR_OF_DAY, 0);
calEnd.set(Calendar.MINUTE, 0);
calEnd.set(Calendar.SECOND, 0);
calEnd.set(Calendar.MILLISECOND, 0);
Date midnightTonight = calEnd.getTime();
EN

回答 15

Stack Overflow用户

发布于 2012-09-07 21:48:25

找到午夜的最简单方法是:

代码语言:javascript
复制
Long time = new Date().getTime();
Date date = new Date(time - time % (24 * 60 * 60 * 1000));

第二天:

代码语言:javascript
复制
Date date = new Date(date.getTime() + 24 * 60 * 60 * 1000);
票数 36
EN

Stack Overflow用户

发布于 2015-12-09 21:28:54

这些方法将帮助您-

代码语言:javascript
复制
public static Date getStartOfDay(Date date) {
     Calendar calendar = Calendar.getInstance();
     calendar.setTime(date);
     calendar.set(Calendar.HOUR_OF_DAY, 0);
     calendar.set(Calendar.MINUTE, 0);
     calendar.set(Calendar.SECOND, 0);
     calendar.set(Calendar.MILLISECOND, 0);
     return calendar.getTime();
 }

代码语言:javascript
复制
public static Date getEndOfDay(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);
    calendar.set(Calendar.MILLISECOND, 999);
    return calendar.getTime();
}
票数 16
EN

Stack Overflow用户

发布于 2015-08-10 20:19:13

java.time

如果您使用的是Java8或更高版本,可以尝试使用java.time package (Tutorial):

代码语言:javascript
复制
LocalDate tomorrow = LocalDate.now().plusDays(1);
Date endDate = Date.from(tomorrow.atStartOfDay(ZoneId.systemDefault()).toInstant());
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6850874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档