Получить шестнадцатеричное время из скрипта bash - PullRequest
3 голосов
/ 15 сентября 2010

Я хотел бы преобразовать текущую дату и время в шестнадцатеричную метку времени, что-то вроде:

Вт 2 февраля 10:27:46 GMT 2010, преобразованный в 0x6d054a874449e

Я хотел бысделать это из сценария bash, есть идеи, как мне это сделать?

Спасибо, J

Ответы [ 3 ]

6 голосов
/ 15 сентября 2010
printf '0x%x' $(date +%s)
3 голосов
/ 15 сентября 2010

Не зная единицы измерения или эпохи для вашей шестнадцатеричной метки времени, трудно сказать наверняка (и я был слегка смущен вашим примером «2 февраля», который даже близко не соответствует текущей дате!).

date +%s преобразует текущую дату в time_t, количество секунд с обычной эпохи Unix (которая наступает в полночь 1 января 1970 года).

printf "0x%x" some_number преобразует значение из десятичного числа в шестнадцатеричное.

Если вам нужно конвертировать в другую эпоху / единицу, вам нужно будет сделать некоторые вычисления. Вы можете сделать арифметику в bash используя $(( expression )):

$ time_t=$(date +%s)
$ echo $(($time_t * 1000))
1284505668000

Если вы хотите преобразовать произвольную дату (например, ваш пример «2 февраля ...»), а не текущую, и готовы предположить, что у вас версия GNU date, вы можете использовать опция -d вместе с выходным форматом +%s для преобразования:

$ date -d 'Tue Feb 2 10:27:46 GMT 2010' +%s 
1265106466

Пример объединения всего этого:

$ time_t=$(date -d 'Tue Feb 2 10:27:46 GMT 2010' +%s)
$ time_t_ms=$(($time_t * 1000))
$ hexstamp=$(printf "0x%x" $time_t_ms)
$ echo $hexstamp
0x1268e38b4d0
0 голосов
/ 01 сентября 2017

Секунды с эпохи Unix, в гексе:

 echo "$(date +%s)"|xargs printf "0x%x"
 0x59a8de5b

Миллисекунды с эпохи:

 echo "$(date +%s%N)/1000000"|bc|xargs printf "0x%x"
 0x15e3ba702bb

микросекунды:

echo "$(date +%s%N)/1000"|bc|xargs printf "0x%x"
0x55818f6eea775

наносекунд:

echo "$(date +%s%N)"|xargs printf "0x%x"
0x14e0219022e3745c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...