Как преобразовать дату и время в эпоху?

Попробуйте это:

sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

Возможно, вы используете это:http://bbs.ceph.org.cn/question/584

2
28.10.2019, 18:38
1 ответ

Linux— это всего лишь ядро, оно не имеет отношения к этим вопросам и ответам.

С реализацией busyboxdate(GNU dateтакже рассматривает возможность реализации подобной опции ; GNU и busybox date— это две реализации, обычно встречающиеся в системах, использующих Linux в качестве ядра, которые, насколько я знаю, поддерживают ваш синтаксис date -d @xxx).

$ date -D %Y%m%d%H%M%S -d 20191027163020 +%s
1572193820

С ast -открытой реализацией date(, подобной dateвстроенной в ksh93, когда она построена как часть ast -open):

$ date -p %Y%m%d%H%M%S -d 20191027163020 +%s
1572193820

Со встроенной функцией strftimezsh:

$ zmodload zsh/datetime
$ strftime -r %Y%m%d%H%M%S 20191027163020
1572193820

С текущими версиями GNU dateвы можете преобразовать его в формат, который он поддерживает для своих -d/ -f(, например2019-10-27T16:30:20):

t=20191027163020
printf '%s%s-%s-%sT%s:%s:%s\n' $(printf '%s\n' "$t" | fold -w2) |
  date -f - +%s

Обратите внимание, что все они работают по местному времени. Поскольку смещение часового пояса не включено в ваш формат, оно неоднозначно.

Например, в материковой части Великобритании 20191027011200 может быть либо 1572138720, либо 1572135120, поскольку часы показывали 01 :12 :00 дважды с часовым интервалом после перехода на зимнее время.

$ date -d @1572138720 +%Y%m%d%H%M%S
20191027011200
$ date -d @1572135120 +%Y%m%d%H%M%S
20191027011200

Вы можете всегда использовать время в формате UTC, чтобы избежать подобных проблем (, установив для переменной среды $TZзначение UTC0, например ).

4
27.01.2020, 21:58

Теги

Похожие вопросы