Конвертируйте строку datetime в Java Long с помощью XStream
Я пытаюсь получить XStream, чтобы иметь возможность преобразовать строку, содержащую дату и время (например, 2013-01-23 16:50:39.495855
) в java.lang.Long
пример.
В настоящее время у меня есть XML так:
<widget>
<timestamp val="2013-01-23 16:50:39.495855"/>
</widget>
Я хочу преобразовать это в стандартную метку времени эпохи Unix (число в миллис с 1 января 1970 года). Поскольку вышеприведенная дата и время переводятся в метку времени эпохи Unix (если моя математика верна) 1358959839000
Я хотел бы, чтобы XStream преобразовал это в new Long(1358959839000)
пример.
Я не верю, что это возможно с помощью псевдонимов XStream, и мне, вероятно, нужно написать свой собственный Converter
Однако com.thoughtworks.xstream.converters.basic.LongConverter
уже существует, поэтому я не уверен, как написать свой собственный UnixEpochLongConverter
видя, что оба преобразователя пытаются преобразовать строку в длинную. Есть идеи? Заранее спасибо!
2 ответа
Зарегистрируйте ваш пользовательский конвертер как локальный, используя registerLocalConverter или с приоритетом выше XStream.PRIORITY_NORMAL
,
xstream.registerLocalConverter(
Widget.class,
"timestamp",
new UnixEpochLongConverter());
Вы можете использовать объект DateFormat для преобразования строки в объект java.util.Date, а затем сделать date.getTime() для возврата длинного значения. Ниже приведен пример. Вы можете написать метод в вашем объекте, который в основном преобразует строку в long.
String date = "2013-01-23 16:50:39.495855";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S");
Date datem = format.parse(date);
long longDate = datem.getTime();
System.out.println(longDate);