"%d/%m/%Y %H:%M" 形式の日付を秒に変換します。

次のエラーが発生します。

date: invalid date '23/07/2021 14:44'

このコードを実行すると

start="23/07/2021 14:44"
startSec=`date +%s -d "${start}"`

私も試しました

start="23/07/2021 14:44"
startSec=`date -d "${start}" +%s`

文字列日付 ($start) を '%d/%m/%Y %H:%M' 形式で指定して秒に変換するにはどうすればよいですか。

ありがとうございます。

ベストアンサー1

文字列操作を使用して入力をdate

または、Perlでは正確な入力形式を指定する必要があります。

start='23/07/2021 14:44'
perl -MTime::Piece -sE '
    say Time::Piece->strptime($input, "%d/%m/%Y %H:%M")->epoch
' -- -input="$start"
1627051440

文字列操作:文字をフィールドターミネータとしてread使用し、文字列を変数に分割するために使用します。$IFS

start='23/07/2021 14:44'
IFS='/ ' read -r day month year time <<<"$start"
date -d "$year-$month-$day $time"
Fri Jul 23 14:44:00 EDT 2021

<<<これには文字列リダイレクトというbashismがあります。より多くのPOSIXシェルを見るには:

IFS='/ ' read -r day month year time <<END_START
$start
END_START

おすすめ記事