如何在Linux中使用date命令输出yyyy-MM-ddTHH:mm:ssZ格式的时间
如何用Linux的date命令生成yyyy-MM-ddTHH:mm:ssZ格式的时间?
嘿,我来帮你搞定这个需求!你要的其实是ISO 8601标准的UTC时间格式,在Linux里用date命令实现起来很直观,分两种场景给你说明:
1. 基础格式(精确到秒)
如果你只需要到秒的输出(比如2024-05-20T14:28:30Z),直接用GNU date的格式化参数即可,记得加上-u参数指定UTC时区(因为末尾的Z就代表UTC时间):
date -u +"%Y-%m-%dT%H:%M:%SZ"
给你拆解一下每个占位符的作用:
%Y:4位数字的年份(如2024)%m:两位数字的月份(01-12)%d:两位数字的日期(01-31)T:固定的时间分隔符,直接写入格式串就行%H:24小时制的小时数(00-23)%M:两位数字的分钟(00-59)%S:两位数字的秒数(00-59)Z:UTC时区的标识后缀,直接添加
2. 带毫秒的格式(匹配你的示例)
你的示例里包含了毫秒部分(比如1985-04-12T23:20:50.52Z),GNU date支持输出纳秒,我们可以截取前两位来得到毫秒值:
date -u +"%Y-%m-%dT%H:%M:%S.%2NZ"
这里的%2N表示取纳秒的前两位,刚好对应两位毫秒。如果需要三位毫秒(比如2024-05-20T14:28:30.123Z),把%2N改成%3N就行。
小提示
- 大部分Linux发行版(Ubuntu、CentOS、Debian等)默认都是GNU
date,你可以通过date --version确认版本。 - 如果你遇到的是BSD版本的
date(比如部分小众Linux或macOS),参数会略有不同,但Linux环境下基本不用纠结这个。
内容的提问来源于stack exchange,提问作者Ankur Gupta
相关产品推荐
相关产品推荐

