2

C# を使用して生成されたメッセージを Java に変換しようとしています。最初のステップとして、proto ファイルを生成しました。これが得られたものです。

package Om.Business.Scanner;

message ScannerActivityDetail {
   optional string ActivityId = 1;
   optional string ContextId = 2;
   optional int32 ActivityStart = 3;
   optional bcl.DateTime ActivityEnd = 4;
}

Javaの世界でbcl.DateTimeを解釈するにはどうすればよいですか?

私は protobuf-net を使用しており、C# アプリによって生成されたメッセージを逆シリアル化しようとしています。

よろしくお願いします。

4

1 に答える 1

3

を見るとbcl.proto、かなり単純なはずです。Map<DateTime.TimeSpanScale, TimeUnit>明らかな方法でa を作成してから、次のようにします。

public static Date toDate(bcl.DateTime proto) {
    TimeUnit unit = SCALE_TO_UNIT_MAP.get(proto.getScale());
    if (unit == null) {
        throw new IllegalArgumentException("Invalid scale: " + proto.getScale());
    }
    long millis = unit.toMillis(proto.getValue());
    return new Date(millis);
}

も受け入れるコンストラクターがあるため、 Joda TimeDateTime型をまったく同じ方法で使用できますlong。(ただし、どのタイムゾーンを指定するかを考えたいと思うかもしれません...)

于 2012-08-29T21:04:17.960 に答える