请尝试此解决方案。
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