如何在Java中初始化Google协议缓冲区时间戳?

如何在Java中初始化Google协议缓冲区时间戳?,java,timestamp,protocol-buffers,Java,Timestamp,Protocol Buffers,Google protocol buffers(3.0.0-beta2)提供了 本文档描述了使用System.currentTimeMillis()在Java中进行的初始化,如下所示: long millis = System.currentTimeMillis(); Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) * 10000

Google protocol buffers(3.0.0-beta2)提供了

本文档描述了使用System.currentTimeMillis()在Java中进行的初始化,如下所示:

long millis = System.currentTimeMillis();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
    .setNanos((int) ((millis % 1000) * 1000000)).build();

在最近的Java 8中是否有替代方法?

Java 8开始,有了新的日期/时间API,这使得使用的读者更感兴趣

Instant time = Instant.now();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(time.getEpochSecond())
    .setNanos(time.getNano()).build();

关于精度,结果应该是相同的。

现在,您可以使用:

import static com.google.protobuf.util.Timestamps.fromMillis;
import static java.lang.System.currentTimeMillis;
import com.google.protobuf.Timestamp;

...

Timestamp timestamp = fromMillis(currentTimeMillis());
见以下网址的文档: