Преобразовать строку даты в дату эпохи UNIX AIX

#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