我有一个字符串: -
Tue Oct 30 13:22:58 GMT+05:30 2012;
我想分时间和时间来自SimpleDateFormate的日期: -
DateFormat f = new SimpleDateFormat("EEE,MM/dd/yyyy hh:mm:ss);
Date d = f.parse(my string);
DateFormat date = new SimpleDateFormat("MM/dd/yyyy");
DateFormat time = new SimpleDateFormat("hh:mm:ss a");
System.out.println("Date: " + date.format(d));
System.out.println("Time: " + time.format(d));
我收到此错误: -
java.text.ParseException: Unparseable date: "Tue Oct 30 13:22:58 GMT+05:30 2012"
请告诉我这是什么问题。 谢谢, Deepanker
答案 0 :(得分:1)
您的时间戳字符串与您的模式不符:
Tue Oct 30 13:22:58 GMT+05:30 2012
没有办法(更不用说SimpleDataFormat初始化行中的语法错误):
EEE,MM/dd/yyyy hh:mm:ss
因此您需要使模式匹配输入数据。 SimpleDateFormat are described here支持的所有字段。
答案 1 :(得分:0)
您确定日期是否正确?
因为我试图解析它
它会在GMT+05:30
上出错
只需删除:30
即可使用,请参阅此处:
String time = "Tue Oct 30 13:22:58 GMT+05 2012";
long f=Date.parse(time);
System.out.println("Time:" + f);
答案 2 :(得分:0)
目前,你的时区偏移量与RFC 822标准不符,所以我认为你不能直接解析日期而不先对它进行一些清理。
如果您只想要一个偏移量,那么该字符串应如下所示:
Tue Oct 30 13:22:58 +0530 2012
注意,没有“GMT”,并且偏移内没有冒号。然后是相应的模式:
new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy")
或者,您可以指定时区:
Tue Oct 30 13:22:58 IST 2012
模式为:
new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy")