Bash

將格式 ‘%d/%m/%Y %H:%M’ 的日期轉換為秒

  • July 29, 2021

我收到以下錯誤

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’ 格式,然後將其轉換為秒?

謝謝你。

您可以使用字元串操作將輸入強制轉換為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,<<<here-string 重定向。對於更多 POSIX shell:

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

引用自:https://unix.stackexchange.com/questions/659660