1

2013-01-23 16:50:39.495855日時を含む文字列 ( など) をjava.lang.Longインスタンスに変換できるように XStream を取得しようとしています。

現在、次のような XML があります。

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

これを標準の Unix エポック タイムスタンプ (1970 年 1 月 1 日からのミリ秒数) に変換したいと考えています。上記の日時は Unix エポック タイムスタンプ (私の計算が正しければ)に変換されるため、XStream でこれをインスタンス1358959839000に変換したいと思います。new Long(1358959839000)

XStream のエイリアス メソッドでこれが可能だとは思いません。おそらく独自の を作成する必要がありますがConverter、 a はcom.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 値を返すことができます。以下は例です。基本的に文字列を 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 に答える