2

我正在尝试将使用 C# 生成的消息翻译成 JAVA。作为第一步,我生成了原始文件,这就是我得到的

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>,然后:

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 Time的类型,因为它也有一个接受 a 的构造函数。(您可能需要考虑指定哪个时区......)DateTimelong

于 2012-08-29T21:04:17.960 回答