在 Java 中,如何将任何格式的数字日期(例如 dd/MM/yyyy)转换为任何其他数字格式(例如 yyyy-MM-dd)? [复制]

Posted

技术标签:

【中文标题】在 Java 中,如何将任何格式的数字日期(例如 dd/MM/yyyy)转换为任何其他数字格式(例如 yyyy-MM-dd)? [复制]【英文标题】:In Java, how can I convert a numeric date in any format (e.g. dd/MM/yyyy) to any other numeric format (e.g. yyyy-MM-dd)? [duplicate] 【发布时间】:2020-05-26 14:25:49 【问题描述】:

我正在构建一个仅使用以 Java 开头的包的文本本地化库。或 Javax。 (“标准 Java API”)。

该库的最终目标是读取文本文件,识别并将日期和货币从用户声明的 sourceFormat(文本文件中的格式)更改为 outputFormat(再次由用户声明)。

然后将输出格式插入到正确位置的新字符串中,然后保存到新的文本文件中。

唯一需要解决的“难题”是格式化/本地化日期。

我目前有各种编码方法可以提取这 3 个变量(在下面用潜在示例进行实例化):

String outputFormat = "dd/MM/yyyy";   // UK Format

String sourceFormat = "yyyy-MM-dd";  // German Format

String dateFromText = "26/05/2001";

在阅读之后,我找不到任何方法可以轻松地在 Java 中执行此操作.... (也许我错过了什么??)

所以我的问题是最简单的编码方法是什么? (最简单的意思是这对我来说是最快的实现并让代码工作。此时不担心代码的效率)。

我在 SO 上找到了这段代码,用于 C# 中的类似问题: How to convert any date format to yyyy-MM-dd

string DateString = "11/12/2009";
IFormatProvider culture = new CultureInfo("en-US", true); 
DateTime dateVal = DateTime.ParseExact(DateString, "yyyy-MM-dd", culture);

像这样的东西,但对于 Java 来说是完美的。

谢谢!

【问题讨论】:

这能回答你的问题吗? How do I convert the date from one format to another date object in another format without using any deprecated classes? 我猜你的主要问题是自动检测正确的格式。转换本身很容易完成(正如@Savior 已经指出的那样)。但是,假设您在不知道格式的情况下阅读了以下内容:08/05/2020。可能是 8 月 8 日或 8 月 5 日。 @Savior - 是的,我想是的,我会去尝试在我的代码中实现它。谢谢 @GameDroids - 是的,这也是问题的一部分,尽管因为用户可以指定sourceFormat,我可以使用带有开关盒的地图来提取格式。例如用户类型UK,Switch(UK)case UK:map.get UK,返回键"dd/MM/yyyy" 感谢您的所有回答,@savior 该帖子确实有帮助,非常感谢! 【参考方案1】:

您的变量在字符串中,将它们更改为DateLocalDate。 在这里测试看看。

private LocalDate dateloc;

createObj = new nameClase();
Date.valueOf(createObj.getDateNaiss().toString());

【讨论】:

以上是关于在 Java 中,如何将任何格式的数字日期(例如 dd/MM/yyyy)转换为任何其他数字格式(例如 yyyy-MM-dd)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在EXCEL中如何将日期格式转换,例如把2012/09/01变换成2012-09-01?

java 获取当天日期,并将日期转化成数值。

在excel中如何将输入的数字自动转换为日期

在Excel中,如何将数字转化成日期?

在php中将日期格式更改为数字[重复]

java中如何将字符串转换成日期型