【问题标题】:How to get only date without time from calendar? [duplicate]如何从日历中仅获取没有时间的日期? [复制]
【发布时间】:2021-02-02 06:39:53
【问题描述】:

我使用以下代码将一天添加到日历中。但是,我只想在字符串中检索没有时间的日期。这有可能吗?

  Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE,1);
String dateandtime=calendar.getTime();

更新:感谢您的建议。对于像我这样的java新手来说,建议的类似帖子太复杂了。这个问题提供的答案很简单。这就是为什么我建议不要关闭这个问题。

【问题讨论】:

  • 您可以使用 calendar.get(DATE)、calendar.get(MONTH) 和 calendar.get(YEAR) 来表示日、月和年。
  • 感谢您的建议,我会尝试一下。
  • 不,情况不同。
  • 我建议你不要使用Calendar。该课程设计不良且早已过时。而是使用来自java.time, the modern Java date and time APILocalDateLocalDate 是一个没有时间的日期,所以正是您需要的。

标签: java date date-formatting java.util.calendar


【解决方案1】:

这可能会有所帮助

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");

String formatted = format1.format(cal.getTime());
System.out.println(formatted);
// Output "2020-10-19"

【讨论】:

  • 请不要教年轻人使用早已过时且臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。
【解决方案2】:

java.time

为了获得简单、可靠和最新的解决方案,我建议您使用现代 Java 日期和时间 API java.time 进行日期工作。

    LocalDate today = LocalDate.now(ZoneId.of("Europe/Athens"));
    LocalDate tomorrow = today.plusDays(1);
    System.out.println(tomorrow);

当我刚刚(10 月 19 日)运行这个 sn-p 时,输出是:

2020-10-20

LocalDate 是一个没有时间(也没有时区)的日期,所以在我看来,这正是你所需要的,不多也不少。

对于字符串,您可以使用tomorrow.toString()DateTimeFormatter。搜索后者怎么做,很多地方都有描述。

链接: Oracle tutorial: Date Time 解释如何使用 java.time。

【讨论】:

    猜你喜欢
    • 2013-11-29
    • 2013-05-02
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多