【发布时间】:2012-01-30 00:24:05
【问题描述】:
在我的项目中,我使用如下日期转换(为简洁起见,我只取了相关的块)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class FormatTest {
public static void main(String[] args) {
try {
String destinationDateFormat = "MM/dd/yyyy HH:mm:ss";
String sourceDateFormat = "EEE MMM d HH:mm:ss z yyyy";
String dateString = "2011-12-20T00:00:00+00:00";
DatatypeFactory factory = DatatypeFactory.newInstance();
XMLGregorianCalendar cal = factory.newXMLGregorianCalendar(dateString);
Calendar gCal = cal.toGregorianCalendar();
Date convertedDate = gCal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat(sourceDateFormat);
if (convertedDate != null) {
String convertedDateString = new SimpleDateFormat(destinationDateFormat).format(sdf.parse(
convertedDate.toString()).getTime());
System.out.println("Final Date :" + convertedDateString);
}
} catch (DatatypeConfigurationException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
在我的项目中,变量destinationDateFormat 和sourceDateFormat 是从弹簧属性文件中读取的。上面的代码在系统语言环境设置为 en_US 或 en_GB 的 unix 框中工作正常,但其中一个测试框具有 nl_NL 语言环境和这就是上面的代码没有给出 ParseException 的地方。问题是 sourceDateFormat 在 nl_NL 语言环境中不可解析。
谁能建议我在 nl_NL 语言环境中对应的 sourceDateFormat 应该是什么?
我不想更改java代码,因为它很昂贵。
【问题讨论】:
-
如果 Java 代码做了一些愚蠢的事情,比如双重转换,它应该被改变。权宜之计不会有帮助(当人们在这里问这些问题时,我个人觉得很累,因为它们只是对自己有帮助)。
-
我完全同意你的看法。但是你知道,在拥有不同技能的人的大型 IT 项目中,会发生这样的事情。但我一直在为当前的生产版本寻找一种解决方法。当然,此代码将在下一个版本中得到修复和重构。