这个时间格式是什么? (10 位数字,5 位小数)
What is this time format? (10 digits, 5 decimals)
所以我正在使用的网站有一个 websocket,它们按以下方式提供广播时间:
"broadcasted_at":1574325570.71308
这个时间格式是什么,它们是如何生成的?
Unix epoch time ... 自 Unix 纪元以来经过的秒数,即 1970 年 1 月 1 日 00:00:00 UTC 时间
now : 1574327074 : Thu Nov 21 03:04:34 2019
start of day : 1574316000 : Thu Nov 21 00:00:00 2019
1574325570 : 1574325570 : Thu Nov 21 02:39:30 2019
在线转换:https://www.epochconverter.com/
... 或下载代码(构建)让命令行程序执行转换 https://github.com/darrenjs/c_dev_utils
我猜小数部分是当前秒内的微秒数。
… and how do they generate it?
当然,我不知道您的网站使用的是什么语言或库。所以这只是一个例子。在 Java 中生成类似 1574325570.71308 的值:
Instant now = Instant.now();
double epochSeconds = now.getEpochSecond()
+ (double) now.getNano() / (double) TimeUnit.SECONDS.toNanos(1);
String result = String.format(Locale.ROOT, "%f", epochSeconds);
System.out.println("result: " + result);
当我 运行 刚才这个片段 (2019-12-15T11:18:01.562699Z) 时,输出是:
result: 1576408681.562699
如果你想要恰好 5 位小数,另一种方法是使用 DateTimeFormatter
:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendValue(ChronoField.INSTANT_SECONDS)
.appendPattern(".SSSSS")
.toFormatter();
String result = formatter.format(now);
result: 1576408681.56269
所以我正在使用的网站有一个 websocket,它们按以下方式提供广播时间:
"broadcasted_at":1574325570.71308
这个时间格式是什么,它们是如何生成的?
Unix epoch time ... 自 Unix 纪元以来经过的秒数,即 1970 年 1 月 1 日 00:00:00 UTC 时间
now : 1574327074 : Thu Nov 21 03:04:34 2019
start of day : 1574316000 : Thu Nov 21 00:00:00 2019
1574325570 : 1574325570 : Thu Nov 21 02:39:30 2019
在线转换:https://www.epochconverter.com/
... 或下载代码(构建)让命令行程序执行转换 https://github.com/darrenjs/c_dev_utils
我猜小数部分是当前秒内的微秒数。
… and how do they generate it?
当然,我不知道您的网站使用的是什么语言或库。所以这只是一个例子。在 Java 中生成类似 1574325570.71308 的值:
Instant now = Instant.now();
double epochSeconds = now.getEpochSecond()
+ (double) now.getNano() / (double) TimeUnit.SECONDS.toNanos(1);
String result = String.format(Locale.ROOT, "%f", epochSeconds);
System.out.println("result: " + result);
当我 运行 刚才这个片段 (2019-12-15T11:18:01.562699Z) 时,输出是:
result: 1576408681.562699
如果你想要恰好 5 位小数,另一种方法是使用 DateTimeFormatter
:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendValue(ChronoField.INSTANT_SECONDS)
.appendPattern(".SSSSS")
.toFormatter();
String result = formatter.format(now);
result: 1576408681.56269