如何删除Date对象的子秒部分

时间:2010-09-03 10:13:41

标签: java

当SQL数据类型为时间戳时,java.util.Date存储为2010-09-03 15:33:22.246,如何在存储记录之前将子秒设置为零(例如在这种情况下为246)

5 个答案:

答案 0 :(得分:18)

最简单的方法是:

long time = date.getTime();
date.setTime((time / 1000) * 1000);

换句话说,清除“1970年以来的毫秒数”的最后三位数字。

我相信如果它是java.sql.Timestamp,那么也会清除纳秒部分。

答案 1 :(得分:9)

这是一个想法:

public static void main(String[] args) {
       SimpleDateFormat df = new SimpleDateFormat("S");
       Date d = new Date();
       System.out.println(df.format(d));
       Calendar c = Calendar.getInstance();
       c.set(Calendar.MILLISECOND, 0);
       d.setTime(c.getTimeInMillis());
       System.out.println(df.format(d));

}

答案 2 :(得分:2)

java.util.Calendar可以帮到你。

    Calendar instance = Calendar.getInstance();
    instance.setTime(date);
    instance.clear(Calendar.SECOND);
    date = instance.getTime();

答案 3 :(得分:0)

这是java 8 Instant api的另一种方式

LocalDateTime now = LocalDateTime.now();
Instant instant = now.atZone(ZoneId.systemDefault()).toInstant().truncatedTo(ChronoUnit.SECONDS);
Date date = Date.from(instant);

Date now = new Date();
Instant instant = now.toInstant().truncatedTo(ChronoUnit.SECONDS);
Date date = Date.from(instant);

答案 4 :(得分:0)

或者,您可以使用Apache Commons DateUtils,例如:

DateUtils.setMilliseconds(new Date(), 0);