问题

我有一个包含日期和时间信息的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吗?使用日期和时间是一种更加安全,更直观的方式。例如,你可以在(例如)LocalDateTimeLocalDate对象之间进行简单的转换。

例如(以说明API)

LocalDate date = new LocalDateTime(milliseconds).toLocalDate()

此外,它解决了日期/时间格式化程序的一些线程安全问题,强烈建议使用Java中的任何日期/时间问题。


原文链接