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



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

我不相信使用 XStream 的别名方法可以做到这一点,我可能需要编写我自己的Converter,但是com.thoughtworks.xstream.converters.basic.LongConverter已经存在,所以我不确定如何编写我自己的UnixEpochLongConverter看到两个转换器都试图将字符串转换为长字符串。有什么想法吗?提前感谢!

使用 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);

相关内容

  • 没有找到相关文章

最新更新