25

UNIXで、次のようなエポックミリ秒の日付文字列に変換する方法。

19-FEB-12
16-FEB-12
05-AUG-09

これらの日付をサーバーの現在の時刻と比較するためにこれが必要です。

4

2 に答える 2

45

エポックからの日付を秒に変換するには:

date --date="19-FEB-12" +%s

現在のエポック:

date +%s

だから、あなたの日付は過去のものなので:

NOW=`date +%s`
THEN=`date --date="19-FEB-12" +%s`

let DIFF=$NOW-$THEN
echo "The difference is: $DIFF"

BSDのdateコマンドを使用すると、

$ date -j -f "%d-%B-%y" 19-FEB-12 +%s

GNUとの違いdate

  1. -jdate時計を設定しようとするのを防ぎます
  2. 入力形式は、で明示的に設定する必要があります-f
  3. 入力日は通常の引数であり、オプションではありません(つまり-d
  4. 日付で時刻が指定されていない場合は、深夜ではなく現在の時刻を使用してください。
于 2013-02-11T04:00:29.487 に答える
1

これがを使用する1つの方法GNU awkです。走る:

awk -f script.awk file

内容script.awk

BEGIN {

    n = systime()

    FS="-"
}

{
    t = mktime(sprintf("%d %d %d %d %d %d", "20" $3, convert($2), $1, 0, 0, 0))    

    printf "%.1f days ago\n", (n - t) / 60 / 60 / 24
}

function convert(m) {

    return(((index("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC", m) - 1) / 3) + 1)
}

結果:

358.6 days ago
361.6 days ago
1286.6 days ago
于 2013-02-11T04:35:27.397 に答える