Java 如何删除日期对象的子秒部分
java.util.Date存储为2010-09-03 15:33:22.246当SQL数据类型为timestamp时,如何在存储记录之前将子秒设置为零(例如,在本例中为246)。最简单的方法是:Java 如何删除日期对象的子秒部分,java,Java,java.util.Date存储为2010-09-03 15:33:22.246当SQL数据类型为timestamp时,如何在存储记录之前将子秒设置为零(例如,在本例中为246)。最简单的方法是: long time = date.getTime(); date.setTime((time / 1000) * 1000); 换言之,清除“UTC 1970年以来的毫秒”的最后三位数字 我相信如果它是java.sql.Timestamp的话,它也会清除纳秒部分。这里有一个想法: public st
long time = date.getTime();
date.setTime((time / 1000) * 1000);
换言之,清除“UTC 1970年以来的毫秒”的最后三位数字
我相信如果它是java.sql.Timestamp
的话,它也会清除纳秒部分。这里有一个想法:
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));
}
java.util.Calendar
可以帮助您
Calendar instance = Calendar.getInstance();
instance.setTime(date);
instance.clear(Calendar.SECOND);
date = instance.getTime();
下面是Java8即时api的另一种方法
LocalDateTime now = LocalDateTime.now();
Instant instant = now.atZone(ZoneId.systemDefault()).toInstant().truncatedTo(ChronoUnit.SECONDS);
Date date = Date.from(instant);
或
或者,您可以使用Apache Commons DateUtils,例如:
DateUtils.setMilliseconds(new Date(), 0);
那是很久以前的事了!更像是date.setTime(date.getTime()-date.getTime()%1000)@JonSkeet如何从毫秒值中删除小时、分钟和秒,只留下日期?我一直在计算,但我似乎无法计算出来。@Churro:没有时区,就没有日期。您可以构造一个带有适当时区的
日历
,在其中设置时间,然后从中提取日期。或者就我个人而言,我会利用乔达的时间。很酷的数学解决方案!
DateUtils.setMilliseconds(new Date(), 0);