Я пришел из другого фона в Java. Этот вопрос может выглядеть глупым, но я не могу его решить своими текущими навыками.JSON UTC date string для локальной строки даты с использованием apache common
Мой сервер возвращает дату 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");
}
}
Мое требование заключается в преобразовании UTC строку даты локальной строки даты с помощью Apache (Common Потокобезопасная). Также, если есть оптимизация кода для выполнения того же, это было бы более оценено.
Также мне не нужна дата как тип данных даты, поэтому она может быть преобразована в String/remove адаптера пользовательского типа, если дата может быть отображена в формате желаемого формата («MMM dd, yyyy hh: mm a»).
Я использую ApacheCommons v3.4 и не существует метода 'parse()', который вызывает у меня проблемы. Если я использую 'parseObject()', то он возвращает объект Date как null из блока catch. –
Я использую Java-7, поэтому не могу использовать JSR-310. Если бы я не смог найти решение, я попробую Джоду. О ThreeTenABP & Time4A Я не мог понять, как использовать их в моем адаптере Model & Date для удовлетворения моих требований. Если бы вы могли дать образец, это помогло бы мне. –
@RajanSharma Официальный API для v3.4 упоминает, что [метод] (https://commons.apache.org/proper/commons-lang/javadocs/api-3.4/org/apache/commons/lang3/time/FastDateFormat. html # parse (java.lang.String)), проверит его вскоре после его загрузки. –