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