Protocol buffers 如何以protobuf 3格式表示XMLGregorianCalendar

Protocol buffers 如何以protobuf 3格式表示XMLGregorianCalendar,protocol-buffers,protobuf-java,Protocol Buffers,Protobuf Java,我有一个以时间为单位的xml <Opened date="2012-09-13T18:30:34+05:30" Lang_Code="ENG"></Opened> 我需要用proto3格式表示它,并提供生成的java类。 使用什么数据类型?我试过google.protobuf.Timestamp,但那不合适 syntax = "proto3"; message Opened{ <what data type?> date =1; strin

我有一个以时间为单位的xml

<Opened date="2012-09-13T18:30:34+05:30" Lang_Code="ENG"></Opened>

我需要用proto3格式表示它,并提供生成的java类。 使用什么数据类型?我试过google.protobuf.Timestamp,但那不合适

syntax = "proto3";

message Opened{

  <what data type?> date =1;

  string lang_code=2;

}
syntax=“proto3”;
消息打开{
日期=1;
字符串语言代码=2;
}

< /代码> 您可能希望至少考虑使用<代码> DATETIME/<代码>消息,即,我们的(谷歌)用于我们的公共API原型,包括支持类型如“代码>日期时间< /C> 您可能需要记录并验证以下内容:

  • year
    值永远不会为0
  • hour
    值永远不会是24
  • seconds
    值永远不会是60(除非您确实计划支持闰秒)
  • time\u offset
    oneof将始终通过
    utc\u offset

当然,如果您愿意,您可以使用类似的信息创建自己的proto。没有现成的消息包含您需要的内容,因此您需要使用某种消息,除非您只想将其保留为字符串(我不建议这样做)。

这需要额外的东西吗?导入
导入“google/type/datetime.proto”不是现成的。。也许我做错了。@KoustavRay:好吧,你要么克隆那个repo,要么至少复制proto定义,这样proto就可以使用它了。proto编译器不知道如何从GitHub本身获取数据。然后,您可以自己生成它,也可以依赖包含生成代码的Maven包。(恐怕我不知道哪一个包是即时的。)恐怕这样的定制解决方案在我们的组织中可能不被接受。谢谢though@KoustavRay:与其说是定制解决方案,不如说是创建自己的类似原型,这是我建议的另一件事。基本上,protobuf中没有传递所需信息的“已知”类型。因此,除非您决定将其指定为字符串,否则您将需要这样的消息。您可以创建自己的,也可以使用我们已经在google.type.thanking@Jon中提供的自定义类型,该自定义类型现在已从您提供的类型中克隆。