有没有一种简单的方法将LocalDate(用Java 8引入)转换为java.util.Date对象?
通过'简单',我的意思是比这更简单:
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎有点尴尬.
由于我们只对日期部分感兴趣,并且两个对象中都没有时区信息,为什么要明确引入时区?应该隐式采用午夜时间和系统默认时区进行转换.
这些之间有什么区别:
zonedDateTime.truncatedTo(ChronoUnit.DAYS);
zonedDateTime.toLocalDate().atStartOfDay(zonedDateTime.getZone());
Run Code Online (Sandbox Code Playgroud)
有理由偏爱另一个吗?
谢谢
换句话说,我想要提供Joda-Time的功能:
today = today.withTime(0, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)
但是没有Joda-Time,只能使用java.util.Date.
不推荐使用.setHours()等方法.有更正确的方法吗?
我需要知道如何从目前的午夜开始.
例如,我得到"15.06.2012 16:40:20",我需要"15.06.2012 00:00:00".
public List<Game> getGamesByDate(Date day) throws SQLException {
final Date startDate = day;
//here I need to convert startDate to midnight somehow
final Date endDate = new Date(day.getTime() + (23 * HOUR) + (59 * MINUTE));
final List<Game> games = gameDAO.getGamesByDate(startDate, endDate);
return games;
}
Run Code Online (Sandbox Code Playgroud) 我想在过去3天创建的数据中标记日期.我想从头开始(00:00)过去3天.
我有这个代码:
int days = 3
GregorianCalendar gc=new GregorianCalendar();
gc.add(GregorianCalendar.DAY_OF_MONTH, -days);
if (timeCreated.before(gc.getTime())) {
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
如果当前时间是16:00我从过去的3点开始,从16:00到现在.我想从3天前的00:00到现在.
提前致谢.