我正在使用shannah的数据访问库通过他的DAO接口访问我的对象。
一旦我的东西在数据库中,当调用unmap方法时,解析日期值时会遇到一个非常奇怪的行为。它只在CEST(中欧夏令时)上失败
我尝试使用NumberUtil.dateValue方法来解析它,但它仍然失败......
java.lang.RuntimeException: Failed to parse string date format Thu Mar 31 00:00:00 CEST 2016. Could not find appropriate format parser.
我将DateFormat定义为
dateFormats[0] = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
dateFormats[1] = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");
dateFormats[2] = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZZ yyyy");
dateFormats[3] = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy");
也尝试修剪String但它没有帮助。
我没有想法,因为SDF没有将构造函数作为普通JDK,第二个参数是Locale。
答案 0 :(得分:1)
// Method that take date time string , input pattern and out put pattern,that return formatted date as string
public String parseDate(String dateTime,String inputPattern, String outputPattern) throws ParseException {
SimpleDateFormat inputFormat = new SimpleDateFormat(inputPattern, Locale.ENGLISH);
SimpleDateFormat outputFormat = new SimpleDateFormat(outputPattern);
Date date = inputFormat.parse(dateTime);
String str = outputFormat.format(date);
return str;
}
// call method
String date = parseDate("Thu Mar 31 00:00:00 CEST 2016" ,"EEE MMM dd HH:mm:ss zzz yyyy", "MM-dd-yyyy:HH:mm:ss");
// print date
System.out.println(date);
// Result
03-31-2016:03:00:00
答案 1 :(得分:0)
我现在为这个问题做了一个解决方法,我仍然可以进一步开发我的api和东西,但说实话我不喜欢这个修复,因为我认为它会在以后的时区产生一些问题。
有更多经验的人可以告诉我有关此修复的任何信息,如果它可能导致TimesZones和夏季/冬季时间出错吗?
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy");
String dateValue = plannedDate;
String year = dateValue.substring(dateValue.length() - 4);
dateValue = dateValue.substring(0, 20);
dateValue += year;
this.plannedDate = sdf.parse(dateValue);
欢迎任何建议或可能的修复(y)