在 Java 中重置时间戳的时间部分
在Java中,给定一个时间戳,如何将时间部分单独重置为00:00:00,以便时间戳表示该特定日期的午夜?
在T-SQL中,此查询将实现相同的目的,但我不知道如何在Java中执行此操作。
SELECT CAST( FLOOR( CAST(GETDATE() AS FLOAT ) ) AS DATETIME) AS 'DateTimeAtMidnight';
在Java中,给定一个时间戳,如何将时间部分单独重置为00:00:00,以便时间戳表示该特定日期的午夜?
在T-SQL中,此查询将实现相同的目的,但我不知道如何在Java中执行此操作。
SELECT CAST( FLOOR( CAST(GETDATE() AS FLOAT ) ) AS DATETIME) AS 'DateTimeAtMidnight';
您可以转到 Date->Calendar->set->Date:
Date date = new Date(); // timestamp now
Calendar cal = Calendar.getInstance(); // get calendar instance
cal.setTime(date); // set cal to date
cal.set(Calendar.HOUR_OF_DAY, 0); // set hour to midnight
cal.set(Calendar.MINUTE, 0); // set minute in hour
cal.set(Calendar.SECOND, 0); // set second in minute
cal.set(Calendar.MILLISECOND, 0); // set millis in second
Date zeroedDate = cal.getTime(); // actually computes the new Date
我喜欢Java日期。
请注意,如果您使用的是实际的java.sql.Timestamps,则它们具有额外的nanos字段。当然,日历对纳米一无所知,所以在最后创建零点日期时会盲目地忽略它并有效地删除它,然后您可以使用它来创建新的Timetamp对象。
我还应该注意,Calendar不是线程安全的,所以不要以为你可以让它成为一个从多个线程调用的静态单个cal实例,以避免创建新的Calt实例。