如何将stat获取的文件修改时间转为ISO8601 UTC毫秒时间戳?
解决方案
直接用date命令解析stat的输出并转换格式即可,这里提供两种常用写法:
方法一:命令替换方式
date -d "$(stat -c '%y' TEST_FILE.tar)" --utc +%FT%T.%3NZ
方法二:xargs传递参数方式
stat -c '%y' TEST_FILE.tar | xargs -I {} date -d {} --utc +%FT%T.%3NZ
原理说明
stat -c '%y' TEST_FILE.tar输出文件带时区的原始修改时间,比如你给出的2023-08-21 05:16:10.802947000 +0200date -d "<时间字符串>"让GNU date解析该时间(注意:这个特性是GNU date专属,若用BSD/macOS的date,需替换为gdate)--utc将时间转换为UTC时区+%FT%T.%3NZ是指定输出格式:%F对应YYYY-MM-DD格式%T对应HH:MM:SS格式%3N提取毫秒(原输出的微秒会自动截断为三位)- 末尾的
Z用来标识UTC时区
拿你提供的示例输入测试,运行后会输出2023-08-21T03:16:10.802Z,完全符合需求格式。
内容的提问来源于stack exchange,提问作者Miss aya
相关产品推荐
相关产品推荐

