Как было предложено DevSolar, если вы Аренту делать любую другую обработку дат с этими значениями, можно просто использовать
if [[ $dt1 < $dt2 ]]; then
# your logic here..
printf "less than..\n";
else
# your logic here..
printf "greater than or equal..\n";
fi
, если вам нужно преобразовать их в формате даты и/или хотите проверить строку ввода, можно использовать экстракцию Баш подстроки:
$ dt1="20151020T113100.475"
$ date -d "${dt1:0:4}-${dt1:4:2}-${dt1:6:2} ${dt1:9:2}:${dt1:11:2}:${dt1:13:6}"
Tue Oct 20 11:31:00 AEDT 2015
Выходные форматы могут быть применены и здесь, например:
$ date -d "${dt1:0:4}-${dt1:4:2}-${dt1:6:2} ${dt1:9:2}:${dt1:11:2}:${dt1:13:6}" +"%s"
1445301060
здесь% s дает секунд с момента 1970-01-01 00:00:00 UTC
так, чтобы сравнить с другой даты (dt2
), можно использовать что-то вроде
dt1="20151020T113100.475"
dt2="20151021T113100.475"
ts1=$(date -d "${dt1:0:4}-${dt1:4:2}-${dt1:6:2} ${dt1:9:2}:${dt1:11:2}:${dt1:13:6}" +"%s")
ts2=$(date -d "${dt2:0:4}-${dt2:4:2}-${dt2:6:2} ${dt2:9:2}:${dt2:11:2}:${dt2:13:6}" +"%s")
if ((ts1<ts2)); then
# your logic here..
printf "less than..\n"
else
# your logic here..
printf "greater than or equal..\n"
fi
, который выводит
less than..
см man date для действительных выходных форматов
Что вы имеете в виду? Вы хотите указать дату в одном формате и получить ее в другом формате? –
Либо «дата» понимает формат, либо нет. В зависимости от вашей системы возможности различаются. Если вам нужно больше контроля, вам нужно использовать что-то более мощное, например, встроенный модуль Perl в формате Time, Piece', который позволяет вам указать строку формата. –
Да. У меня есть 2 дня в% Y% d% dT% H% M% S.% N формат. Я хочу сравнить их – ManInMoon