gpt4 book ai didi

java - 如何在java中从日期时间获取日期

转载 作者:行者123 更新时间:2023-11-29 08:20:44 26 4
gpt4 key购买 nike

这是我的日期字符串,

String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";

我只想获取格式为“yyyy-MM-dd”的日期。我怎样才能得到这种格式的日期。我尝试使用以下代码,但它不起作用。

String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";

Date date = null;
try {
date = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss Z").parse(dd);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String newstr = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println("\n"+newstr+"\n");

最佳答案

java.time

使用现代 Java 日期和时间 API java.time,如果您知道如何操作,这将非常简单:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"MMM-dd-uuuu HH:mm:ss.SSS zzz(xx)", Locale.ROOT);
String dd = "Nov-08-2019 07:00:28.190 UTC(+0000)";
LocalDate date = LocalDate.parse(dd, formatter);
System.out.println(date);

输出是:

2019-11-08

如我们所见,您的字符串采用 UTC 格式。我假设您还想要 UTC 日期。如果不是,我们需要解析成 ZonedDateTime,转换成您想要的区域,然后格式化成您想要的输出格式,只有日期。

我假设 UTC(+0000) 是时区缩写,后跟括号中的偏移量。

您尝试使用的日期和时间类 DateSimpleDateFormat 设计不佳且早已过时,后者尤其麻烦。你不应该使用它们。 java.time 非常有用。

你的代码出了什么问题?

  • MM 代表两位数的月份,例如 11 代表十一月或 08 代表八月。对于像 Nov 这样的月份缩写,您需要 MMM
  • Z 用于偏移,如 +0000。虽然这确实出现在您的字符串中,但文本 UTC 出现在它之前。编辑:令人困惑的 SimpleDateFormatUTC 解析为时区,然后忽略字符串的其余部分。就我而言,我不应该依赖这种行为。
  • 我建议您为格式化程序指定一个语言环境,以控制它希望在字符串中使用哪种语言。使用 MMM 表示月份缩写,如果您依赖默认语言环境并且它恰好是威尔士语,则您的格式化程序将期望使用 Tach 表示 11 月。

链接

关于java - 如何在java中从日期时间获取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58849227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com