我想实现一个线程安全的函数来从java.util.Date中删除时间部分.
我试过这种方式
private static final DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
public static Date removeTimeFromDate(Date date) {
Date returnDate = date;
if (date == null) {
return returnDate;
}
//just have the date remove the time
String targetDateStr = df.format(date);
try {
returnDate = df.parse(targetDateStr);
} catch (ParseException e) {
}
return returnDate;
}
Run Code Online (Sandbox Code Playgroud)
并使用synchronized或threadLocal使其成为线程安全的.但它有更好的方法在Java中实现它.看来这种方式有点冗长.我对此不满意.
甲Date对象保持变量至极表示时间以来的毫秒数时代.所以,你不能"删除"时间部分.您可以做的是将当天的时间设置为零,这意味着它将是当天的00:00:00 000.这是通过使用GregorianCalendar完成的:
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(date);
gc.set(Calendar.HOUR_OF_DAY, 0);
gc.set(Calendar.MINUTE, 0);
gc.set(Calendar.SECOND, 0);
gc.set(Calendar.MILLISECOND, 0);
Date returnDate = gc.getTime();
Run Code Online (Sandbox Code Playgroud)