将当前时间转换为WebKit / Chrome 17位时间戳

苏耶克

我正在编写一些bash脚本,用于解析和修改OS X中Google Chrome的多个首选项和书签。某些值需要提供17位WebKit时间戳。现在,我已经用13116319200000000CEST对其进行了硬编码,编码对应于本周一在CEST的工作日开始,但是最好以某种方式从当前系统时间进行计算,因为脚本将在不同的时间进行部署。

WebKit时间戳是自1601年1月1日00:00 UTC以来的64位微秒值。在OS X上以bash进行这种转换可能是不可能的,因为的内置版本data不支持高于一秒的分辨率(例如%N),但是也许某些高智能的数学可以做到。


无论如何,我已经在网上搜索并找到了多个示例,这些示例说明了如何将这种时间戳转换为人类可读的时间,但并非相反。最好的例子是这个网站该网站列出了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计算的,因此无法访问它。

如果有人可以帮助我完成我可以嵌入到我的脚本中的工作,我将感到非常高兴。


注意: 尽管Google Chrome浏览器使用的所有17位数字都具有精确的微秒,但我实际上并不需要这种分辨率。就像在链接的网站上一样,四舍五入到秒,最后六位数字为零是完全可以的。唯一重要的因素-必须正确计算。

虎222

像这样吗?

from datetime import datetime, timedelta


def date_from_webkit(webkit_timestamp):
    epoch_start = datetime(1601, 1, 1)
    delta = timedelta(microseconds=int(webkit_timestamp))
    return epoch_start + delta


def date_to_webkit(date_string):
    epoch_start = datetime(1601, 1, 1)
    date_ = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
    diff = date_ - epoch_start
    seconds_in_day = 60 * 60 * 24
    return '{:<017d}'.format(
        diff.days * seconds_in_day + diff.seconds + diff.microseconds)


# Webkit to date
date_from_webkit('13116508547000000')  # 2016-08-24 10:35:47

# Date string to Webkit timestamp
date_to_webkit('2016-08-24 10:35:47')  # 13116508547000000

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 Javascript 中将当前时间转换为 WebKit/Chrome 17 位时间戳(我在 Python 中有答案)

19位时间戳转换

WebKit / Chrome时间戳转换为Ruby / Rails

使用PHP将19位时间戳转换为日期时间

Python-将时间ISO 8601 STRING转换为13位时间戳(MS),反之亦然

Java日期格式的16位时间戳

将DNP3时间的48位(6个八位位组)转换为python中的时间戳

如何使用Shell将ISO 8601时间戳转换为Unix时间戳?

如何在php中转换7位时间戳?

如何使用strptime转换微秒部分的7位时间戳字符串?

如何将当前日期时间转换为 13 位 Unix 时间戳?

将BLE当前时间转换为日期

将日期/时间转换为当前的JDN

将ISO 8601时间戳字符串转换为java.time.OffsetDateTime

Java:将ISO 8601时间戳字符串转换为epoch秒

将 unix 时间戳转换为 moment js 在 chrome 中无法正常工作

MySQL是否具有13位时间戳列类型?

将当前时间戳 UTC 转换为 CET

将2015-12-04 17:02:10 +00:00时间转换为微秒

CakePHP 3.0时间戳行为

Laravel 4时间戳格式

Laravel 5.2时间戳

将ISO 8601时间格式转换为UNIX时间戳(纪元)并再次返回而不会损失小数秒?

通过Python将镶木地板int96时间戳转换为日期时间/日期

命令行将ISO8601时间转换为Unix时间戳

PHP:如何将18位时间从窗口服务器转换为本地时间

将时间戳以秒为单位转换为具有当前日期的时间戳

Java 11时间-今天是(长)时间戳

MySQL 5.7时间戳字段显示日期时间?