从 Date 对象中删除时间?

2022-08-31 12:40:08

我想从对象中删除时间。Date

DateFormat df;
String date;
df = new SimpleDateFormat("dd/MM/yyyy");
d = eventList.get(0).getStartDate(); // I'm getting the date using this method
date = df.format(d); // Converting date in "dd/MM/yyyy" format

但是当我转换这个日期(格式)时,它也在附加时间。String

我根本不想要时间。我想要的只是“21/03/2012”。


答案 1

您可以通过将小时、分钟、秒和毫秒值设置为零,从 java.util.Date 中删除时间部分。

import java.util.Calendar;
import java.util.Date;

public class DateUtil {

    public static Date removeTime(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return cal.getTime();
    }

}

答案 2

快速的答案是:

不,您不能这样做。因为这就是用途。Date

从 javadoc 的 :Date

类 Date 表示特定时间点,精度为毫秒级。

但是,由于此类只是一个数据对象。它不在乎我们如何描述它。当我们看到一个日期时,我们可以说它是,这就是你需要的。有很多方法可以做到这一点。2012/01/01 12:05:10.3212012/01/01

示例 1:通过操作字符串

输入字符串 : 2012/01/20 12:05:10.321

所需输出字符串 : 2012/01/20

由于 yyyy/MM/dd 正是我们需要的,因此我们可以简单地操作字符串来获得结果。

String input = "2012/01/20 12:05:10.321";
String output = input.substring(0, 10);  // Output : 2012/01/20

示例 2:按简单日期格式

输入字符串 : 2012/01/20 12:05:10.321

所需输出串 : 01/20/2012

在这种情况下,我们需要一种不同的格式。

String input = "2012/01/20 12:05:10.321";
DateFormat inputFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
Date date = inputFormatter.parse(input);

DateFormat outputFormatter = new SimpleDateFormat("MM/dd/yyyy");
String output = outputFormatter.format(date); // Output : 01/20/2012

有关 的用法,请查看 SimpleDateFormat JavaDocSimpleDateFormat