#bash #date #unix #unix-timestamp #aix
#bash #Дата #unix #unix-временная метка #aix
Вопрос:
Я работаю с сервером ОС версии AIX 5.3, и мне нужно развернуть оболочку, которую я сделал в Linux (RedHat), но у меня возникает большая проблема, когда я пытаюсь манипулировать некоторыми временными метками.
В Linux я использую:
`Start="Thu Mar 28 16:49:20 2019"`
`date -d "$Start" %s`
чтобы вычислить секунды с 1970 года, которые соответствуют дате, но в UNIX AIX 5.3 я получаю следующую ошибку:
date: Not a recognized flag: d
Usage: date [-u] [ "Field Descriptors"]
Как я могу это сделать в UNIX AIX? Мне нужно вычислить секунды с 1970 года с определенной даты (формат даты: Пт 25 ноября 02:11:53 2011)
Комментарии:
1. Учитывая возраст операционной системы (и отсутствие обновлений, что подразумевает), я собираюсь предположить, что вам придется работать с тем, что уже установлено, а не устанавливать GNU
date
самостоятельно. Что установлено? Я думаю, вам придется написать свою собственную реализацию на языке, который имеет доступ кstrptime
системному вызову.2. Согласно справочной странице , вы можете передать дату в формате mmddHHMM[[ГГ] гг] без каких-либо опций; но, похоже, это только для установки времени.
3. @chepner Я хотел бы сделать это обычным способом, но проблема заключается в функции даты в AIX (как сказал tripleee).
Ответ №1:
Преобразовать дату в эпоху в AIX с Perl:
#!/usr/bin/perl
# Usage: mkepoch yyyy mm dd HH MM SS
use Time::Local;
($yyyy, $mm, $dd, $HH, $MM, $SS)=@ARGV;
$tm=timelocal($SS, $MM, $HH, $dd, $mm - 1, $yyyy);
print "$tmn";
Использование:
chmod u x ./mkepoch
Start="2019 03 28 16 49 20"
./mkepoch $Start
Вывод:
1553788160
Источник: преобразовать определенную дату во временную метку unix
Комментарии:
1. Есть ли способ сделать это с помощью bash? Моя оболочка должна быть с этим интерпретатором. С perl у меня были проблемы с развертыванием моей оболочки в рабочей среде
2.
bash
просто не имеет возможности самостоятельно анализировать строку даты и не предоставляет интерфейс дляstrptime
.3. С perl -e я мог выполнять команды perl, мог ли я анализировать параметры из bash (в моей оболочке) в perl (в моей оболочке)?
4. Я получаю некоторые значения, и они есть в моей среде bash, мне нужны эти значения (некоторые даты) для разбора в разделе pearl. Даты в формате IE: пятница, 25 ноября, 02:11:53 2011
5. Это может помочь в качестве однострочного:
perl -e 'use Time::Local; ($yyyy, $mm, $dd, $HH, $MM, $SS)=@ARGV; $tm=timelocal($SS, $MM, $HH, $dd, $mm - 1, $yyyy); print "$tmn";' 2019 03 28 16 49 20