Страница 1 из 1
Конвертировать время в указанном формате в epoch
Добавлено: 18.06.2014 18:56
nerve
$ date +%s
1403103042
$ date +"%d.%m.%Y, %H:%M"
18.06.2014, 17:51
формат записи даты как в последнем примере. как конвертировать имеющуюся дату в таком формате?
например как получить время в секундах для даты 30.1.2008, 5:30
Re: Конвертировать время в указанном формате в epoch
Добавлено: 18.06.2014 19:12
/dev/random
nerve писал(а): ↑18.06.2014 18:56
$ date +%s
1403103042
$ date +"%d.%m.%Y, %H:%M"
18.06.2014, 17:51
формат записи даты как в последнем примере. как конвертировать имеющуюся дату в таком формате?
например как получить время в секундах для даты 30.1.2008, 5:30
В случае GNU date:
Shell
date +%s -d "$(echo '30.1.2008, 5:30' | sed 's/\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\),/\3-\2-\1/')"
В вашем профиле указано, что у вас OpenBSD. У меня сейчас нет BSD, чтобы проверить, но теоретически должна сработать такая команда:
Shell
date -f "%d.%m.%Y, %H:%M" -j '30.1.2008, 5:30' +%s
Re: Конвертировать время в указанном формате в epoch
Добавлено: 18.06.2014 21:41
nerve
не, на шлюзе я такими делами не занимаюсь)
обработка даты на линуксе.
мне почему то казалось, что такую задачу должна выполнять date сама, без посторонних средств.
Re: Конвертировать время в указанном формате в epoch
Добавлено: 18.06.2014 21:46
nerve
/dev/random писал(а): ↑18.06.2014 19:12
В случае GNU date:
Shell
date +%s -d "$(echo '30.1.2008, 5:30' | sed 's/\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\),/\3-\2-\1/')"
то есть перевернуть год с днем через дефис и этот формат date поймет.
почему-то у меня не совпадает с онлайновым конвертером
Shell
# date +%s -d "$(echo '30.1.2008, 5:30' | sed 's/\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\),/\3-\2-\1/')"
1201667400
Re: Конвертировать время в указанном формате в epoch
Добавлено: 18.06.2014 21:50
/dev/random
nerve писал(а): ↑18.06.2014 21:46
то есть перевернуть год с днем через дефис и этот формат date поймет
И запятую убрать.
Re: Конвертировать время в указанном формате в epoch
Добавлено: 18.06.2014 22:12
nerve
/dev/random писал(а): ↑18.06.2014 21:50
nerve писал(а): ↑18.06.2014 21:46
то есть перевернуть год с днем через дефис и этот формат date поймет
И запятую убрать.
Shell
~# date +%s -d "$(echo '30.1.2008, 5:30' | sed 's/\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\), \([0-9]\+\)/\3-\2-\1 \4/')"
1201667400
Re: Конвертировать время в указанном формате в epoch
Добавлено: 18.06.2014 22:23
/dev/random
nerve писал(а): ↑18.06.2014 22:12
Shell
~# date +%s -d "$(echo '30.1.2008, 5:30' | sed 's/\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\), \([0-9]\+\)/\3-\2-\1 \4/')"
1201667400
1. Не вижу, зачем усложнять. Вариант без четвёртой части тоже запятую убирает.
2. Ту часть сообщения, что про онлайн-конвертер, я не видел. Возможно, вы отредактировали сообщение уже после того, как я на него ответил? В любом случае, тот конвертер предполагает, что вы укажете время в UTC, а приведённая команда - местное время. Время в секундах Unix-эпохи всегда указывается в UTC, соответственно, команда сконвертирует часовой пояс перед выдачей результата. Онлайн-конвертор этого не делает.