Команда date
не предлагает ничего подобного, что довольно печально, поскольку RFC-3339 - это современный, широко распространенный, здравый формат, используемый везде (кроме электронной почты, которая не является ни современной, ни здравой).
Мое смещение часового пояса в настоящее время составляет -08: 00, поэтому самая простая форма этой команды должна выводить текущее время как 2013-09-05T14:58:33.102-08:00
.
2013-09-05 14:58:33.102 -0800
кроме случаев, когда есть какая-то причина, почему пробелы вообще не должны использоваться.Ответы:
Похоже , что вы можете сделать несколько форматов , используя переключатель для реализации ГНУ
date
(версии 5.90 или выше),--rfc3339=
.Примеры
Если вы хотите,
T
чтобы был добавлен, как взломать:Если вы хотите это в миллисекундах:
Ссылки
источник
--iso-8601' option accepts the same arguments as
--Rfc-3339`, и включает в себя «T» в его выходе.s/\(\....\).*-/\1-/g
должнаs/\(\....\).*\([+-]\)/\1\2/g
также работать восточнее Атлантики.NOTE: ISO 8601 defines date and time separated by "T".
то время как RFC3339 позволяет вместо этого использовать пробел. Читайте ietf.org/rfc/rfc3339.txt Раздел 5.6С GNU
date
(5,90 или выше):Заменить
%N
с%3N
для миллисекунд, в%6N
течение микросекунд ...AFAIK, ни одна из спецификаций POSIX, Unix или LSB не определяет какую-либо команду, которая может отображать время с точностью до доли секунды, но дробная часть является необязательной в RFC 3339.
POSIX / Unix / LSB strftime поддерживает
%z
отображение смещения TZ как-0800
, поэтому наиболее переносимым, что вы, вероятно, собираетесь получить, является:источник
GNU
date
имеет встроенный формат ISO-8601 - не слишком ли он близок или вообще не соответствует RFC-3339?источник
Как насчет старого доброго:
источник
0200
пропускает двоеточие, которое может сломать некоторые системы, которые в этом нуждаются.time-numoffset
на tools.ietf.org/html/rfc3339#section-5.6 .Вы также можете проще отформатировать время в соответствии с RFC3339 (ISO8601) :
ПРИМЕЧАНИЕ. Этот формат также используется в конвенции Label Schema Convention RC 1.0.
источник
-u
флагом этот ответ правильный, верно?Эти команды совместимы с POSIX, за исключением
%z
спецификации преобразования. Тем не менее,%z
он широко поддерживается и работает одинаково в Linux, MacOS, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, Solaris, Minix и Haiku. Он также работает с инструментами Busybox, Toybox и sbase (утилиты базовой системы suckless.org). Поскольку%z
выводит смещение часового пояса в±HHMM
формате, нам нуженsed
канал, чтобы добавить двоеточие и изменить его на±HH:MM
.ПРИМЕЧАНИЕ. Команда проекта Heirloom
date
имеет несовместимый%z
вывод: она не печатает+
знак.источник