我正在编写一些bash脚本,用于解析和修改OS X中Google Chrome的多个首选项和书签。某些值需要提供17位WebKit时间戳。现在我已经用13116319200000000
对它进行了硬编码,这相当于本周一在CEST开始工作的日子,但是如果按照当前系统时间计算,这将非常棒,因为脚本将在不同的时间部署。将当前时间转换为WebKit/Chrome 17位数时间戳
WebKit时间戳是自1601年1月1日00:00 UTC以来的64位值,以微秒为单位。在OS X上bash的这种转换可能是不可能的,因为data
的内置版本不支持高于一秒的分辨率(如%N
),但也许一些高智能的数学可以。
不管怎么说,我在网上搜索,发现关于如何此类时间戳转换为人类可读的时间,而不是周围的其他方式的多个实例。最好的例子是this website,从一些dpcnull用户列表python脚本:
import datetime
def date_from_webkit(webkit_timestamp):
epoch_start = datetime.datetime(1601,1,1)
delta = datetime.timedelta(microseconds=int(webkit_timestamp))
print epoch_start + delta
inTime = int(raw_input('Enter a Webkit timestamp to convert: '))
date_from_webkit(inTime)
,也有这个JavaScript对表单的动作(其中document.we.wk.value
指向形式):
function WebkitToEpoch() {
var wk = document.we.wk.value;
var sec = Math.round(wk/1000000);
sec -= 11644473600;
var datum = new Date(sec * 1000);
var outputtext = "<b>Epoch/Unix time</b>: " + sec;
outputtext += "<br/><b>GMT</b>: " + datum.toGMTString() + "<br/><b>Your time zone</b>: " + datum.toLocaleString();
$('#resultle1').html(outputtext);
}
那看起来可能很容易倒置,但我尝试失败。
有趣的是,该网站显示当前的WebKit时间戳,但经过检查,我认为它是在服务器级别的PHP计算的,因此无法访问它。
如果有人能帮助我,我可以嵌入我的脚本,我会很高兴。
注:虽然谷歌浏览器的所有17位精确微秒,我并不真的需要这样的分辨率。就像在链接的网站上,四舍五入到最后六位数字是零是非常好的。唯一重要的因素 - 它必须正确计算。
非常感谢您对__点的快速回复!在试图将你的代码放入我的时候,我实际上已经发现'datetime.now()'输出的精确微秒(带'%f'),所以我用它来获得完整的分辨率。幸运的是,经过几次测试,我发现微秒显然没有前导零,但是感谢[pyformat](https://pyformat.info)网站,我发现了'{:06d}'。 。我会在这里发布我的最终代码。 – Soyek