时间戳格式
目录:
摘要
问题
阿拉想能够通过时间戳,还有一个辣阿拉所有系统搭第三方系统里侪运行良好个统一时间戳格式,来跟踪事体发生个辰光。
阿拉搭时间戳格式勿同个系统交互:
JSON 消息呒没原生个时间戳格式,所以阿拉需要选择哪能拿时间戳转成字符串,哪能拿字符串转成时间戳,也就是哪能序列化/反序列化。
有眼应用设置成用本地时间,而勿是 UTC 时间。迭对必须适应本地时间个项目比较方便,比方触发根据本地时间个事件个项目。
有眼系统对时间精度有勿同个需要搭能力,比方用秒、毫秒还是纳秒个时间分辨率。比方,Linux 操作系统个
date命令默认个时间精度是秒,而纳斯达克证券交易所要求默认个时间精度是纳秒。
决策
阿拉选纳秒精度个 ISO 8601 时间戳标准格式,具体是“YYYY-MM-DDTHH:MM:SS.NNNNNNNNNZ”。
迭个格式显示年、月、日、时、分、秒、纳秒,还有 Zulu 时区,也就是 UTC、GMT。
状态
已决定。
详情
假设
阿拉需要处理迭眼时间戳文本字符串,从时间戳转成字符串(也叫序列化),再从字符串转成时间戳(也叫反序列化)。
阿拉想要一个总体上容易用、容易转换、人容易读个格式。
阿拉想搭阿拉控制勿了个各种外部系统兼容,比方分析系统、数据库系统、金融系统。
限制
有眼系统有时间精度个限制。比方,macOS 操作系统个 date 命令可以打印秒级个时间精度,但是勿能打印纳秒级。
立场
阿拉考虑过一系列选项:
Unix 纪元,也就是一个递增个数字。
简洁个文本格式“YYYYMMDDTHHMMSSNNNNNNNNN”。
用本地时区还是 UTC 时区。
论据
对典型用法,阿拉看重人容易读/写,胜过原始速度/体积。
对典型用法,阿拉想要一个辣机器系统里运行良好、手工用也良好个格式,比方写样例数据、读 JSON 输出、用 grep 查日志文件等等。
对非典型用法,比方高性能计算,阿拉预计会想通过拿文本转成更加快个格式(比方编程语言内置个日期对象类型),来优化阿拉选个任何文本格式。所以文本格式对 HPC 来讲勿大重要。
影响
阿拉各种文本系统搭时间系统会逐渐统一到迭个格式。
相关
相关决策
阿拉可能也想要一个快速/容易个办法,来跟踪时间差,也叫持续辰光。用 Unix 纪元时间戳就容易。
相关需求
阿拉可能想调整阿拉个决策,比方要是有一个对特定种类日志消息戳个相关需求,比方 Splunk、Sumo、ELK 等等。
相关工件
语言个格式化器搭解析器:
Rosetta Code 例子:
SixArm 例子:
相关原则
容易撤销。阿拉可以蛮容易地改成勿同个格式,比方 Unix 纪元。
推迟过早优化。对典型用法,阿拉勿大关心多出来个几个字符,比方用破折号搭冒号个格式。
备注
迭里加备注。