我有一个包含日期和时间信息的 Java Date 对象。我想写一个切断时间信息的方法,截断小时-分钟-秒,所以我只剩下日期。
示例输入:
2008-01-01 13:15:00
预期产出:
2008-01-01 00:00:00
你有小费吗?我试着做这样的事情:
(timestamp / (24 * 60 * 60 * 1000)) * (24 * 60 * 60 * 1000)
但我遇到了时区的问题。
推荐的日期 / 时间操作方式是使用Calendar
对象:
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();
您是否查看过 Apache Commons Lang 中的DateUtils截断方法?
Date truncatedDate = DateUtils.truncate(new Date(), Calendar.DATE);
将删除时间元素。
只是根据现在构建到 Java 8 和更高版本中的java.time类的快速更新。
LocalDateTime
有一个truncatedTo
方法,可以有效地解决您在这里谈论的内容:
LocalDateTime.now().truncatedTo(ChronoUnit.MINUTES)
这将表示当前时间只下降到分钟:
2015-03-05T11:47
您可以使用小于 DAYS 的ChronoUnit
(或TemporalUnit
)来执行截断(因为截断仅应用于 LocalDateTime 的时间部分,而不是日期部分)。
你看过Joda吗?这是一个更容易和更直观的方式来处理日期和时间。例如,您可以在(例如)LocalDateTime和LocalDate对象之间进行简单的转换。
例如(以说明 API)
LocalDate date = new LocalDateTime(milliseconds).toLocalDate()
此外,它解决了日期 / 时间格式化程序的一些线程安全问题,强烈建议在 Java 中处理任何日期 / 时间问题。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(88条)