如何在 Java 中初始化 Google 协议缓冲区时间戳?
How to initialize Google protocol buffers Timestamp in Java?
Google protocol buffers (3.0.0-beta2) 提供 well-known type Timestamp.
文档描述了 Java 中使用 System.currentTimeMillis() 的初始化,如下所示:
long millis = System.currentTimeMillis();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
.setNanos((int) ((millis % 1000) * 1000000)).build();
最近Java8有没有替代方法?
从 Java8 开始,有新的 Date/Time-API reader 使用 java.time.Instant
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());
参见文档:
Google protocol buffers (3.0.0-beta2) 提供 well-known type Timestamp.
文档描述了 Java 中使用 System.currentTimeMillis() 的初始化,如下所示:
long millis = System.currentTimeMillis();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
.setNanos((int) ((millis % 1000) * 1000000)).build();
最近Java8有没有替代方法?
从 Java8 开始,有新的 Date/Time-API reader 使用 java.time.Instant
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());
参见文档: