我正在尝试将使用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#app生成的消息进行反序列化。
提前感谢您的帮助。
答案 0 :(得分: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的DateTime
类型,因为它也有一个接受long
的构造函数。 (您可能想要考虑指定哪个时区......)