如何从Android中的SimpleDateFormat()获取时间?

时间:2012-10-30 14:46:54

标签: android datetime simpledateformat

我有一个字符串: -

   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

3 个答案:

答案 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")