如何在UNIX中将"19-FEB-12"等字符串转换为纪元日期

hel*_*ish 24 unix bash date unix-timestamp

在UNIX中如何转换为epoch毫秒日期字符串,如:

19-FEB-12
16-FEB-12
05-AUG-09
Run Code Online (Sandbox Code Playgroud)

我需要这个将这些日期与服务器上的当前时间进行比较.

Ane*_*new 44

要将日期转换为自纪元以来的秒数:

date --date="19-FEB-12" +%s
Run Code Online (Sandbox Code Playgroud)

当前时代:

date +%s
Run Code Online (Sandbox Code Playgroud)

所以,因为你的日期已经过去了:

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

let DIFF=$NOW-$THEN
echo "The difference is: $DIFF"
Run Code Online (Sandbox Code Playgroud)

使用BSD的date命令,您需要

$ date -j -f "%d-%B-%y" 19-FEB-12 +%s
Run Code Online (Sandbox Code Playgroud)

与GNU的不同之处date:

  1. -j防止date尝试设置时钟
  2. 必须使用显式设置输入格式 -f
  3. 输入日期是常规参数,而不是选项(即.-d)
  4. 如果没有指定日期时间,请使用当前时间而不是午夜.