处理纳秒时间戳字符串
Posted
技术标签:
【中文标题】处理纳秒时间戳字符串【英文标题】:Dealing with nanosecond timestamp strings 【发布时间】:2015-01-28 21:55:19 【问题描述】:我有一些分辨率低至纳秒的时间戳。我希望能够解析时间戳并创建 javascript Date 对象(或其一些扩展或类似物),以便可以对它们进行排序/添加/减去等......但似乎 Javascript Date 对象不会超过毫秒.
有没有办法扩展 Date 对象来存储额外的精度?我已经寻找了可以执行此操作的现有库,但到目前为止还没有找到。
需要明确的是,我不需要从 Date.now() 获取纳秒...我只需要能够将时间戳字符串解析为具有必要精度的对象。
JS 环境是浏览器(不是 Node.js)。
【问题讨论】:
是否打算在人类可读的列表中显示解析的日期字符串(漂亮的日期而不是时间戳)?还是您需要日期对象来处理更复杂的事情?如果没有,您能否不解析日期并将额外的纳秒附加到字符串,将原始字符串存储在data
属性中?
@haxxxton 是的,我希望能够获取两个日期对象列表并按时间顺序对它们进行排序,添加或减去增量等。增量都应该以毫秒为单位,但能够对日期时间进行排序是首要目标。正如你所说,我想其中一些可以扩展到额外的数据属性,并且我可以扩展像 moment.js 这样的库,但不幸的是没有找到似乎已经支持的库。似乎浏览器 js 环境无法在纳米尺度上创建,所以这可能是原因,但希望我仍然可以在那个尺度上处理已解析的项目。
【参考方案1】:
派对迟到了,但这是我的 2 美分
javascript temporal proposal
还支持纳秒精度:见Instant class 由于这将被添加为原生 javascript 功能,这绝对是要走的路 截至 2021 年 1 月,有一个有效的 polyfill,但是该提案仍在 Stage 2 中,因此我们不应在生产中使用它:Docsjs-joda
支持纳秒精度:见LocalTime class注意:
我认为扩展 Date 对象不是一个好主意。例如您可以添加微秒属性等,但这可能会导致现有代码出现问题 例如有许多库会在内部创建日期的副本。即通常使用这样的代码:if (value instance of Date) value = new Date(Date.valueOf())
- 然后您的微秒字段信息就会丢失
【讨论】:
以上是关于处理纳秒时间戳字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 3 中以纳秒为单位获取时间戳? [复制]
shell脚本获取时间戳偶尔报错value too great for base
是否有任何命令以纳秒为单位显示 Apple 文件系统 (APFS) 时间戳?
在 Python 3.6.9 中以纳秒为单位获取 Epoch 时间戳