【发布时间】:2016-07-26 11:48:58
【问题描述】:
我来自 Java 的另一个背景。这个问题可能看起来很傻,但我无法以我目前的技能解决它。
我的服务器将 UTC 日期作为 json 字符串返回。我将 Gson 与自定义类型适配器一起使用,并使用 SimpleDateFormat 将其转换为所需的日期格式(加上本地时区)。但由于 SimpleDateFormat 不是线程安全的,所以我尝试使用 Apache 通用语言库来获得我失败的相同内容。
//private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone("UTC"));
@Override
public Date deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
try {
return DateUtils.parseDate(element.getAsString(), "yyyy-MM-dd HH:mm:ss");
} catch (ParseException e) {
return null;
}
/*
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
return sdf.parse(element.getAsString());
} catch (ParseException e) {
return null;
}
*/
}
我期待像 fdf.parse() 这样的东西将 UTC 日期字符串转换为本地日期,但不知道应该使用什么。
在我的模型中:
public class UserData {
...
private Date dt;
private final SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy hh:mm a");
public String getTime() {
//return dt == null ? "" : sdf.format(dt);
return DateFormatUtils.format(dt, "MMM dd, yyyy hh:mm a");
}
}
我的要求是使用 Apache common(线程安全)将 UTC 日期字符串转换为本地日期字符串。此外,如果有优化代码来执行相同的操作,那将不胜感激。
此外,我不需要将日期作为日期数据类型,因此如果日期可以显示为所需的格式(“MMM dd,yyyy hh:mm a”),它可以简单地转换为字符串/删除自定义类型适配器。
【问题讨论】:
标签: java android json date apache-commons