在 JAVA 中将 Json dateTime 转换为字符串
Posted
技术标签:
【中文标题】在 JAVA 中将 Json dateTime 转换为字符串【英文标题】:Convert Json dateTime to String in JAVA 【发布时间】:2016-06-25 09:55:13 【问题描述】:我有: CreatedTime 时间戳, 更新时间时间戳, 状态 Varchar, AutoID 列
在 mysql 中。通过我的服务,我得到了以下 json 格式。
"CreatedTime": "\/Date(1457646424000)\/",
"UpdatedTime": "\/Date(1457647761000)\/",
"Status": "Open",
"AutoID": 1
我正在尝试如下转换 CreatedTime 和 UpdatedTime:
public String ConvertJsonDateTime(String jsondate)
if (jsondate != "" && !jsondate.equals("") && jsondate != null && jsondate != "null")
jsondate = jsondate.replace("/Date(", "").replace(")/", "");
long time = Long.parseLong(jsondate);
Date d = new Date(time);
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d).toString();
else
return "";
但是它返回了错误的细节。例如在表中 CreatedTime
是 2016-03-10 14:47:04
但函数 ConvertJsonDateTime
返回为 2016-03-11 03:17:04
。我该如何解决这个问题?
【问题讨论】:
可能你必须为你的SimpleDateFormat
设置正确的TimeZone
jsondate!=""
-> 永远不要在 Java 中使用 ==
或 !=
比较字符串:***.com/questions/513832/… 并将 jsondate!=null
放在表达式的最左侧:如果它为空,!jsondate.equals("")
将抛出一个 NPE
【参考方案1】:
您需要设置正确的时区
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); // GMT or any timezone
另外,正如 Bart 所说,你永远不要使用 ==
或 !=
比较字符串,总是使用 equals()
【讨论】:
以上是关于在 JAVA 中将 Json dateTime 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
ServiceStack DateTime数据类型转Json出现的困扰