2012-03-10 103 views
0

我想将RC3339时间格式转换为MM-dd-yyyy hh:mm a,但它在sampleDate处显示空值。Regd无法解析日期:

timestamp = rcobj.getString("timestamp"); 
SimpleDateFormat sdf = new SimpleDateFormat(
    "yyyy-MM-dd'T'HH:mm:ss+SSSZ", Locale.US); 
Date sampleDate = sdf.parse(timestamp, new ParsePosition(0)); 
sdf = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.US); 
if (timestamp != null) { 
    timestamp = sdf.format(sampleDate); 
} 
+0

'timestamp'的价值是什么?为什么你解析它,如果它可能是空的,而不先检查? (另外,我假设这是Java,但是如果你这样标记它,它会有所帮助......) – 2012-03-10 20:30:38

回答

0

如果timestamp是一个无效的日期,parse method抛出一个ParseException,所以它不是。

如果timestampnull,parse()将抛出NullPointerException

我几乎可以保证rcobj.getString("timestamp")返回null


BTW parse(timestamp, new ParsePosition(0))相当于简单的parse(timestamp)

+0

时间戳具有这样的值:2012-01-19T18:23:43 + 0000.但它现在通过改变字符串的模式IN SimpleDateFormat.I使用这个来修复:yyyy-MM-dd'T'HH:mm:ss + SSSZ相反,它在我使用yyyy-MM-dd'T'HH时有效:mm :ss它与我的时间戳字符串不匹配的偏移模式。当我改变模式它工作得很好。这些帮助我。 – user907998 2012-03-11 13:55:43