Конвертируйте строку 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);
Другие вопросы по тегам