1

我试图让 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 日以来的毫秒数)。由于上述日期时间转换为 (如果我的数学是正确的) 的 Unix 纪元时间戳1358959839000,我希望 XStream 将其转换为new Long(1358959839000)实例。

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

4

2 回答 2

1

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

xstream.registerLocalConverter(
    Widget.class, 
    "timestamp", 
     new UnixEpochLongConverter());
于 2013-01-23T19:20:03.123 回答
-1

您可以使用 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);
于 2013-01-23T17:59:00.277 回答