1

我需要将 jul 05 10:30:00 ist 2012 格式转换为 2012-07-11 10:30:00.0 格式。我试过以下

  String str_date = "Fri Jul 06 10:30:00 IST 2012";
SimpleDateFormat fmt = new SimpleDateFormat("dd MMM hh:mm:ss Z yyyy");
Date today = null;
try {
    today = (Date) fmt.parse(str_date);
    System.out.println("Todays date:" + today);
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

java.sql.Date dt = new java.sql.Date(today.getTime());

我正进入(状态

java.text.ParseException:无法解析的日期:“Fri Jul 06 10:30:00 IST 2012”在 java.text.DateFormat.parse(DateFormat.java:337) 错误

谁能帮我解决这个问题?

4

2 回答 2

4

在遵循这两个错误时提供相同的格式是因为字符串日期中的格式和格式不同,因此使其相同以便可以解析它。

String str_date = "Fri Jul 06 10:30:00 IST 2012";
SimpleDateFormat fmt = new SimpleDateFormat("dd MMM hh:mm:ss Z yyyy");

例如用以下替换上面

String str_date = "Fri Jul 06 10:30:00 IST 2012";
SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy");

您可以按如下方式更改格式:

final String OLD_FORMAT = "EEE MMM d HH:mm:ss z yyyy";
final String NEW_FORMAT = "yyyy-MM-d hh:mm:ss";


String oldDateString = "Fri Jul 06 10:30:00 IST 2012";
String newDateString;

SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
Date d = sdf.parse(oldDateString);
sdf.applyPattern(NEW_FORMAT);
newDateString = sdf.format(d);

这里 d 将是您的旧格式日期:Fri Jul 06 10:30:00 IST 2012

新日期是2012-07-6 10:30:00

于 2012-07-05T05:33:56.547 回答
2

您编码的日期和时间模式与字符串格式不匹配。

日期和时间模式

有关详细信息,请参阅SimpleDateFormat文档。

对于解析"Fri Jul 06 10:30:00 IST 2012"格式应该是"EEE MMM d H:m:s z y".

要生成"2012-07-06 10:30:00.0"的格式应该是"yyyy-MM-dd HH:mm:ss.S".

两种格式之间的完整转换将是:

SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM d H:m:s z y");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date date = sdf1.parse("Fri Jul 06 10:30:00 IST 2012");
assert sdf2.format(date) == "2012-07-06 10:30:00.0";
于 2012-07-05T05:37:27.397 回答