0

我有一个字符串:-

   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"

请告诉我有什么问题。谢谢, 迪潘克

4

3 回答 3

1

您的时间戳字符串与您的模式不匹配:

Tue Oct 30 13:22:58 GMT+05:30 2012

不可能(更不用说 SimpleDataFormat 初始化行中的语法错误):

EEE,MM/dd/yyyy hh:mm:ss

所以你需要使模式匹配输入数据。此处描述了 SimpleDateFormat 支持的所有字段。

于 2012-10-30T14:51:23.470 回答
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);
于 2012-10-30T14:59:41.023 回答
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")
于 2012-10-30T15:53:29.577 回答