Я пишу некоторый скрипт bash, который анализирует и изменяет несколько настроек и закладок Google Chrome в OS X. Некоторые из значений требуют 17-значной метки времени WebKit. На данный момент я жестко закодировал его с 13116319200000000
, который соответствует началу моего рабочего дня в этом месяце в CEST, но было бы здорово, если бы это как-то было рассчитано с текущего системного времени, так как сценарий будет развернут в разное время.Преобразование текущего времени в WebKit/Chrome 17-значная временная метка
Временная метка WebKit представляет собой 64-битное значение для микросекунд с 1 января 1601 00:00 по UTC. Такое преобразование в bash на OS X может быть невозможным, так как встроенная версия data
не поддерживает разрешение выше второй (например, %N
), но может быть, может быть, очень интеллектуальная математика.
Во всяком случае, я искал в Интернет и нашел несколько примеров о том, как преобразовать такую метку времени читаемого времени, но не наоборот. Лучшим примером будет this website, который перечисляет питон скрипт из некоторого dpcnull пользователя:
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 цифр с точными микросекунд, я на самом деле не нужно такое разрешение. Как и на связанном веб-сайте, округление до секунд с шестью цифрами, являющимися нулями, отлично. Единственный важный фактор - он должен правильно рассчитать.
Благодарим вас за то, что вы быстро поняли ответ point_!Пытаясь поместить свой код в мой, я действительно обнаружил, что 'datetime.now()' выводит также точные микросекунды (с '% f'), поэтому я использовал его для получения полного разрешения. К счастью, после нескольких тестов я выяснил, что микросекунды, очевидно, не имеют ведущих нулей, но благодаря сайту [pyformat] (https://pyformat.info) я обнаружил '' {: 06d} '. Format() ' , Я напишу свой последний код здесь. – Soyek