Как преобразовать строки типа "19-FEB-12" в эпоху в UNIX В UNIX, как преобразовать в эпоху миллисекунд, введите строки: 19-FEB-12 16-FEB-12 05-AUG-09 Мне нужно это, чтобы сравнить эти даты с текущим временем на сервере. Ответ 1 Чтобы преобразовать дату в секундах с эпохи: date --date="19-FEB-12" +%s Текущая эпоха: date +%s Итак, поскольку ваши даты в прошлом: NOW=`date +%s` THEN=`date --date="19-FEB-12" +%s` let DIFF=$NOW-$THEN echo "The difference is: $DIFF" Используя команду BSD date, вам понадобится $ date -j -f "%d-%B-%y" 19-FEB-12 +%s Отличия от GNU date: -j предотвращает попытку date установить часы Формат ввода должен быть явно установлен с помощью -f Дата ввода является регулярным аргументом, а не опцией (-d) Если время не указано с датой, вместо этого используйте текущее время полуночи. Ответ 2 Здесь один из способов: GNU awk. Для запуска: awk -f script.awk file Содержание script.awk: BEGIN { n = systime() FS="-" } { t = mktime(sprintf("%d %d %d %d %d %d", "20" $3, convert($2), $1, 0, 0, 0)) printf "%.1f days ago\n", (n - t) / 60 / 60 / 24 } function convert(m) { return(((index("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC", m) - 1) / 3) + 1) } Результаты: 358.6 days ago 361.6 days ago 1286.6 days ago
Ответ 1 Чтобы преобразовать дату в секундах с эпохи: date --date="19-FEB-12" +%s Текущая эпоха: date +%s Итак, поскольку ваши даты в прошлом: NOW=`date +%s` THEN=`date --date="19-FEB-12" +%s` let DIFF=$NOW-$THEN echo "The difference is: $DIFF" Используя команду BSD date, вам понадобится $ date -j -f "%d-%B-%y" 19-FEB-12 +%s Отличия от GNU date: -j предотвращает попытку date установить часы Формат ввода должен быть явно установлен с помощью -f Дата ввода является регулярным аргументом, а не опцией (-d) Если время не указано с датой, вместо этого используйте текущее время полуночи.
Ответ 2 Здесь один из способов: GNU awk. Для запуска: awk -f script.awk file Содержание script.awk: BEGIN { n = systime() FS="-" } { t = mktime(sprintf("%d %d %d %d %d %d", "20" $3, convert($2), $1, 0, 0, 0)) printf "%.1f days ago\n", (n - t) / 60 / 60 / 24 } function convert(m) { return(((index("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC", m) - 1) / 3) + 1) } Результаты: 358.6 days ago 361.6 days ago 1286.6 days ago