问题
我有一个包含日期和时间信息的Java Date对象。我想写一个方法来切断时间信息,截断小时 - 分钟 - 秒,所以我只剩下日期。
示例输入:
2008-01-01 13:15:00
预期产量:
2008-01-01 00:00:00
你有小费吗?我尝试过这样的事情:
(timestamp / (24 * 60 * 60 * 1000)) * (24 * 60 * 60 * 1000)
但是我遇到了时区的问题。
#1 热门回答(152 赞)
建议做日期/时间操作是使用aCalendar
对象:
Calendar cal = Calendar.getInstance(); // locale-specific
cal.setTime(dateObject);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
long time = cal.getTimeInMillis();
#2 热门回答(124 赞)
你看过Apache Commons Lang中的DateUtilstruncate方法了吗?
Date truncatedDate = DateUtils.truncate(new Date(), Calendar.DATE);
将删除时间元素。
#3 热门回答(37 赞)
你看过Joda吗?使用日期和时间是一种更加安全,更直观的方式。例如,你可以在(例如)LocalDateTime和LocalDate对象之间进行简单的转换。
例如(以说明API)
LocalDate date = new LocalDateTime(milliseconds).toLocalDate()
此外,它解决了日期/时间格式化程序的一些线程安全问题,强烈建议使用Java中的任何日期/时间问题。