使用SimpleDateFormat格式化日期

时间:2013-03-09 06:52:06

标签: java parsing date date-parsing

我在使用简单的日期格式API解析以下日期时获得解析器异常。

  String inputTimeStamp = "2012/07/19 09:49:00 - GMT -08:00";
  java.text.SimpleDateFormat dateformate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  effDate = dateformate.parse(inputTimeStamp);

请帮我解决这个问题。

4 个答案:

答案 0 :(得分:2)

更改

java.text.SimpleDateFormat dateformate=
    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

java.text.SimpleDateFormat dateformate=
    new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

你的inputTimeStamp

中有斜杠(/)

答案 1 :(得分:2)

因为您要解析的格式不同,所以您已将其描述为SimpleDateFormat。如果effDate类型为String并且应保留格式化日期,则以下代码可能会解决此问题,但GMT-08:00之间不应有空格。

 String inputTimeStamp = "2012/07/19 09:49:00 - GMT -08:00";
 SimpleDateFormat inputDateformat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss - z"); 
 SimpleDateFormat dateformate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 effDate = dateformate.format(inputDateFormat.parse(inputTimeStamp));

我强烈推荐joda time,特别是当您想要对日期进行计算时。

 String inputTimeStamp = "2012/07/19 09:49:00 - GMT -08:00";
 DateTimeFormatter inputDateformat = DateTimeFormat.forPattern("yyyy/MM/dd HH:mm:ss - z Z"); 
 DateTimeFormatter dateformate = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
 effDate = dateformate.print(inputDateFormat.parseDateTime(inputTimeStamp));

答案 2 :(得分:0)

模式为:yyyy/MM/dd HH:mm:ss - z其中z表示一般时区。 SimpleDateFormat

答案 3 :(得分:0)

试试这个:

new SimpleDateFormat("yyyy/MM/dd HH:mm:ss - z");

请参阅this FYR