在 Java 中标准化西班牙日期

Avi*_*ión 2 java date

我需要使用以下格式(字符串)解析西班牙日期:

6 junio 2012 
20 mayo 2012 
Run Code Online (Sandbox Code Playgroud)

junio 的意思是六月,mayo的意思是五月。

正如您所看到的,月份是用西班牙语写的。如何对其进行标准化以获得标准化日期 ( yyyy-mm-dd)?

在上面的例子中,我想要的输出应该是:

2012-06-06
2012-05-20
Run Code Online (Sandbox Code Playgroud)

老实说,我什至不知道如何开始,寻找这个特定案例的解决方案有点困难。

提前致谢

Tim*_*sen 5

尝试以下代码。这里的技巧是用SimpleDateFormat两者来初始化和国家/地区进行初始化,在本例中是西班牙语 (Espa\xc3\xb1ol) 和西班牙 (Espa\xc3\xb1a)。

\n\n
String yourDate = "20 mayo 2012";\nSimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy", new Locale("es","ES"));\nDate date = sdf.parse(yourDate);\nSystem.out.println(date.toString());\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
Sun May 20 00:00:00 SGT 2012\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您想格式化此西班牙日期,yyyy-mm-dd您可以再次使用format()以下方法SimpleDateFormat

\n\n
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-mm-dd");\nSystem.out.println(sdf2.format(date));\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新:

\n\n

MMM我们在完整月份名称的格式掩码中使用的原因在SimpleDateFormat 的 Javadoc中得到了很好的解释中有很好的解释:

\n\n
\n

月:如果模式字母的数量为 3 个或更多,则将月份解释为文本;否则,它被解释为数字。

\n
\n\n

我都见过MMM,甚至MMMM习惯了似乎相同的效果。

\n