Java 8输出日期为YYYY-MM-DD

我在Java 8中有一个将其设置为以下内容的吸气剂,问题是输出为Sat Jan 11 00:00:00 AEDT 2020

该类必须保留为DateStartDateLocalDate

public static Date getStartDate() {
    return Date.from(StartDate.atStartOfDay()
                      .atZone(ZoneId.systemDefault())
                      .toInstant());
}

我需要它来将值返回为YYYY-MM-DD,而我正在努力解决这个问题。

是的,这是一项作业。除了让我烦恼之外,没有逻辑告诉我们将一个设置为Date并将另一个设置为LocalDate……

任何帮助表示赞赏。

beautytai 回答:Java 8输出日期为YYYY-MM-DD

请尝试此解决方案。

public static String getStartDate() {
    DateTimeFormatter oldPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSz");
    DateTimeFormatter newPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    LocalDateTime datetime = LocalDateTime.parse(new Date().toInstant().toString(),oldPattern);
    return datetime.format(newPattern);
}
,

我认为您可以尝试将日期值获取为“ yyyy-MM-dd”

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) {
        String pattern = "yyyy-MM-dd";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

        String date = simpleDateFormat.format(new Date());
        System.out.println(date);
    }
}
,

直接答案-SimpleDateFormatter

正如您指出的那样,getStartDate返回的类型必须保持为Date。在这种情况下,最简单的方法是使用SimpleDateFormat类:

您可以将日期传递到SimpleDateFormatter

SimpleDateFormat iso_8601_formatter = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(iso_8601_formatter.format(getStartDate());

更详细的信息可以在this博客文章中找到。

最佳实践答案-使用java.time

如Ole V.V.所述,如果可以重构代码,则最好在java.time周围统一代码库,而不是将该API与java.util.Date混合使用。这可以通过DateTimeFormatter

来完成
DateTimeFormatter iso_8601_formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate start = StartDate.atStartOfDay();
System.out.println(start.format(iso_8601_formatter));

请注意,DateTimeFormatter为打印ISO-8601格式的值提供了常量DateTimeFormatter.ISO_LOCAL_DATE

有关新API改进的更多信息,请参见this文章。

,

返回java.util.Date的实例时,无法对其进行格式化。它将始终作为Date对象返回。如果您想要使用字符串,

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(new Date());

其中new Date()是今天的日期,无论您放置什么日期对象,sdf对象(java.text.SimpleDateFormat)都会执行。 您可以参考java 8 docs of SimpleDateFormat了解更多信息。

本文链接:https://www.f2er.com/2787126.html

大家都在问