Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除日期对象的子秒部分_Java - Fatal编程技术网

Java 如何删除日期对象的子秒部分

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

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 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);