我的日期值类型为“2013-03-28T15:16:58.000Z”。我想将其转换为“dd-MMM-yyyy”格式。为此,我使用了以下代码:
public static String getTime(String time)
{
try
{
String tim = time.replace("T", " ");
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ", Locale.US);
SimpleDateFormat df2 = new SimpleDateFormat("dd-MMM-yyyy", Locale.US);
return df2.format(df1.parse(tim));
}
catch (ParseException e)
{
return null;
}
}
我从StackOverflow中的各种帖子中得到了这个解决方案。但是这段代码仍然返回null。谁能告诉我为什么?
答案 0 :(得分:5)
由于日期格式无效,第一个null
返回SimpleDateFormat
,因异常阻止而返回null
值。
Z
模式用于表示时区模式。要接受文字Z
字符,您需要用单引号括住字符。
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS'Z'", Locale.US);
此外,如果您不想进行手动替换,也可以对T
字符执行相同操作:
而不是
String tim = time.replace("T", " "); // remove
只需使用time
并使用:
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
答案 1 :(得分:2)
它返回null,因为它正在捕获ParseException并且您告诉它返回null。你应该至少打印出栈跟踪,这应该告诉你为什么你得到ParseException。
答案 2 :(得分:0)
它正在抛出解析字符串的ParseException 2013-03-28 15:16:58.000Z。
尝试摆脱Z [就像你用T做的那样]并使用SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US)