在 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】:
您的变量在字符串中,将它们更改为Date
或LocalDate
。
在这里测试看看。
private LocalDate dateloc;
createObj = new nameClase();
Date.valueOf(createObj.getDateNaiss().toString());
【讨论】:
以上是关于在 Java 中,如何将任何格式的数字日期(例如 dd/MM/yyyy)转换为任何其他数字格式(例如 yyyy-MM-dd)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章