我正在尝试让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。有任何想法吗?提前谢谢!
答案 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);