转换thu jul 05 10:30:00 ist 2012格式转换为2012-07-11 10:30:00.0格式的java

时间:2012-07-05 05:28:43

标签: java date simpledateformat

我需要将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:Unparseable date:“Fri Jul 06 10:30:00 IST 2012”     在java.text.DateFormat.parse(DateFormat.java:337)错误

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

在以下两个错误中提供相同的格式是因为字符串日期中的格式和格式不相同所以使它可以解析它。

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

e.g。用以下

代替上面
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

答案 1 :(得分:2)

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

Date and Time Patterns

有关详细信息,请参阅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";