Java 如何得到给定日期的午夜?
我需要知道如何从日期开始计算当前的午夜 例如,我得到“15.06.2012 16:40:20”,我需要“15.06.2012 00:00:00”Java 如何得到给定日期的午夜?,java,date,Java,Date,我需要知道如何从日期开始计算当前的午夜 例如,我得到“15.06.2012 16:40:20”,我需要“15.06.2012 00:00:00” 公共列表getGamesByDate(Date day)引发SQLException{ 最终日期开始日期=天; //在这里,我需要以某种方式将开始日期转换为午夜 final Date endDate=新日期(day.getTime()+(23*小时)+(59*分钟)); 最终列表games=gameDAO.getGamesByDate(开始日期,结束日
公共列表getGamesByDate(Date day)引发SQLException{
最终日期开始日期=天;
//在这里,我需要以某种方式将开始日期转换为午夜
final Date endDate=新日期(day.getTime()+(23*小时)+(59*分钟));
最终列表games=gameDAO.getGamesByDate(开始日期,结束日期);
返回游戏;
}
您可以使用日历实例获取当前年份、月份和日期。然后你可以随意设定时间
Calendar cal = Calendar.getInstance();
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
用作:
公共列表getGamesByDate(Date day)引发SQLException{
final DateTime startDate=新的日期时间(天)。WithTimeAtStartDay();
....
}
他们希望将给定日期的时间设置为午夜,而不是当前日期。IMO不是重复的。这个问题主要是关于日历
s,这是关于日期
s。这是最好的解决方案,因为例如在巴西,每年不存在一天的午夜。我很确定OP没有考虑这个细节,但也许他只关心没有时区的本地时间戳。这是一个很好的解决方案,我想我会使用这个,但我将其设置为best solution@Nfear,因为他的解决方案没有任何外部库强烈建议添加库。这是一个高质量、老旧的图书馆。在Java8中,由于存在缺陷,Java.util.Date和.Calendar类正被new取代。这些新课程的灵感来自于乔达时代。在您可以迁移到Java8之前,请使用Joda-Time。这不是一个好的答案。由于夏令时(DST)或其他异常情况,某些时区的某些日期没有午夜。看。
Calendar cal = Calendar.getInstance();
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
Date startDate = day;
Calendar cal = Calendar.getInstance();
cal.setTime(startDate);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
Date newDate = cal.getTime();
public List<Game> getGamesByDate(Date day) throws SQLException {
final DateTime startDate = new DateTime(day).withTimeAtStartOfDay();
....
}