使用XStream将字符串日期时间转换为Java Long

时间:2013-01-23 17:36:29

标签: java xml datetime xstream oxm

我正在尝试让XStream能够将包含日期时间的字符串(例如2013-01-23 16:50:39.495855)转换为java.lang.Long实例。

目前,我有这样的XML:

<widget>
    <timestamp val="2013-01-23 16:50:39.495855"/>
</widget>

我想将其转换为标准的Unix纪元时间戳(1970年1月1日以来的毫秒数)。由于上述日期时间转换为(如果我的数学是正确的)1358959839000的Unix纪元时间戳,我希望XStream将其转换为new Long(1358959839000)实例。

我不相信XStream的别名方法可以做到这一点,我可能需要编写自己的Converter,但是com.thoughtworks.xstream.converters.basic.LongConverter已经存在,所以我不知道怎么写我自己的UnixEpochLongConverter看到两个转换器都试图将String转换为Long。有任何想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

使用registerLocalConverter或优先级高于XStream.PRIORITY_NORMAL将自定义转换器注册为本地转换器。

xstream.registerLocalConverter(
    Widget.class, 
    "timestamp", 
     new UnixEpochLongConverter());

答案 1 :(得分:-1)

您可以使用DateFormat对象将字符串转换为java.util.Date对象,然后执行date.getTime()以返回long值。以下是一个例子。您可以在对象中编写一个基本上将字符串转换为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);