从日期对象中删除时间?

新手上路,请多包涵

我想从 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”。

原文由 Laxman Rana 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 551
2 个回答

快速回答是:

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

来自 Date 的 javadoc:

Date 类表示特定的时间瞬间,精度为毫秒。

但是,由于此类只是一个数据对象。它不关心我们如何描述它。当我们看到一个日期 2012/01/01 12:05:10.321 时,我们可以说它是 2012/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:通过 SimpleDateFormat

输入字符串: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 的用法,请查看 SimpleDateFormat JavaDoc

原文由 Rangi Lin 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以通过将小时、分钟、秒和毫秒值设置为零来从 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();
    }

}

原文由 Sunil Manheri 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题