gpt4 book ai didi

Java 字符串到不同格式的日期转换

转载 作者:行者123 更新时间:2023-11-30 06:30:44 25 4
gpt4 key购买 nike

所以我有 String trDate="20120106"; 并且想要获取 Date trDate=2012-01-06 并且正在尝试使用 SimpleDateFormat 用于更改模式,但首先我得到 parse 字符串,然后生成日期,然后尝试调用 format 返回字符串,但我需要日期,任何建议,这是我的代码:

String trDate="20120106";    
Date tradeDate = new SimpleDateFormat("yyyymmdd", Locale.ENGLISH).parse(trDate);
String krwtrDate = new SimpleDateFormat("yyyy-mm-dd", Locale.ENGLISH).format(tradeDate);
Date krwTradeDate = new SimpleDateFormat("yyyy-mm-dd", Locale.ENGLISH).parse(krwtrDate);

这里是 similar question但它没有回答我的问题

我需要转换为 Date 格式 的字符串,只是因为我需要将它传递给另一个只需要 Date 对象 的函数。

如果有人能举例说明如何从 string 中获取 yyyy-mm-dd 格式的 date ,将不胜感激 yyyymmdd 格式?

最佳答案

--- 由于评论更新了答案---

好的,所以您使用的 API 需要一个字符串,它表示格式为 2012-04-20

的日期

然后您需要解析格式不正确的 Date,然后将其重新格式化为所需的格式。

String trDate="20120106";    
Date tradeDate = new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(trDate);
String krwtrDate = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).format(tradeDate);

另请注意,我更改了您的“月份”指示符,因为您犯了一个非常常见的错误,即使用m 表示月份。由于“小时:分钟:秒”日期格式有两个共同的“名称”,均以 m、分钟和月份开头。因此,大写的 M 用于表示月,而小写的 m 用于表示分钟。我敢打赌,这就是您遇到问题的真正原因。

--- 原帖如下---

如果您的 API 需要一个 java.util.Date,那么您不需要做太多事情。您实际上只有两行 java.util.Date

String trDate="20120106";    
Date tradeDate = new SimpleDateFormat("yyyymmdd", Locale.ENGLISH).parse(trDate);

但是如果不快速回顾一下 java.util.Date 是什么,这个解决方案可能就没有意义了。 日期 是事物,但它们的呈现方式与它们的本质是脱节的。

在任何时刻,都有一个 Date 实例来描述那个时刻。 Date 实例应该如何呈现并没有达成一致,这在很大程度上取决于观众说什么语言,他们在哪个国家,这个国家实现了什么规则(夏令时),以及他们的什么文化背景以前做过。

因此,Date 没有单独的关联表示。这就是为什么 Date 上的每个“获取 X”方法都被弃用的原因(其中 X 是日、月、时、年等),但从 0 日期开始获取毫秒数(称为时代)。

因此,对于要正确显示的每个 Date,您需要使用特定于语言、国家/地区、时区的规则将其转换为 String , 和文化先例。理解这些规则并应用它们的对象是 DateFormat

这意味着,一旦您获得了 Date,您就不需要重新格式化它并重新解析它来获得“正确的”Date,因为这两个日期应该相同(对于相同的语言环境)。

关于Java 字符串到不同格式的日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247979/

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