Warm tip: This article is reproduced from serverfault.com, please click

bash-在Linux中从MS AD转换时间戳

(bash - Convert timestamp from MS AD in Linux)

发布于 2020-12-02 08:21:22

我有来自AD的18位时间戳,例如131963400057892956,我想将其转换为Linux中任何可读的内容。

我尝试了这个

echo '131963400057892956/864000000000-109207' | bc |xargs -I DATE date -d @DATE

我得到星期四1月1日17:05:28 +05 1970

但这是错误的方法..如何使其正确?

Questioner
Anton Shevtsov
Viewed
11
Raman Sailopal 2020-12-02 17:35:45

你可以使用awk执行此操作,使用从如何将LDAP时间戳转换为Unix时间戳中获得的所需计算来处理字符串,并通过awk的strftime函数运行该字符串以获取语言环境日期:

awk '{dat=($0/10000000)-11644473600;print strftime("%c",dat) }' <<< "131963400057892956"

Wed 06 Mar 2019 10:00:05 GMT

根据需要更改%c。