我在java中使用其他格式转换日期时遇到了问题(我使用Joda-Time)。事实上,我的格式化本地日期是:
24/giu/14 (Italian format date...but other local formats are possible)
我想在输出中看到这一点(使用Locale格式日期):
24/06/2014
我尝试构建示例代码,但不起作用......我做错了什么?
public String DateConvertFromMediumFormatToSlash (String date)
{
DateTimeFormatter dtf = DateTimeFormat.mediumDate().withLocale(Locale.getDefault());
LocalDate dt = dtf.parseLocalDate(date);
return dt.toString(); // output: 2014-06-24
}
答案 0 :(得分:3)
关于您输入的内容和输出的内容,您的问题很混乱。
但有一个问题似乎是斜线。 Joda-Time希望连字符不是斜线。下面是一些使用Joda-Time 2.3的示例代码,使用适用于Locale of Italy的中等格式显示LocalDate的字符串形式。
LocalDate localDate = new LocalDate( 2014, 6, 24 );
System.out.println( "localDate: " + localDate );
DateTimeFormatter formatter = DateTimeFormat.mediumDate().withLocale( Locale.ITALY );
System.out.println( "output: " + formatter.print( localDate ) );
跑步时......
localDate: 2014-06-24
output: 24-giu-2014
因此,如果要解析/生成带斜杠的字符串而不是意大利语Locale所期望的连字符,则必须明确定义这样的格式化程序。
String input = "24/giu/14";
DateTimeFormatter formatterInput = DateTimeFormat.forPattern( "dd/MMM/yy").withLocale( Locale.ITALY );
LocalDate localDate = formatterInput.parseLocalDate( input );
System.out.println( "localDate: " + localDate );
DateTimeFormatter formatterOutput = DateTimeFormat.forPattern( "dd/MM/yy").withLocale( Locale.ITALY ); // Locale not needed here, but it's a good habit to specify.
String output = formatterOutput.print( localDate );
System.out.println( "Output: " + output );
跑步时......
localDate: 2014-06-24
Output: 24/06/14
顺便说一句,今年使用两位数就是要求麻烦恕我直言。