Bash 如何转换字符串,例如;2012年2月19日“;UNIX中的最新版本

Bash 如何转换字符串,例如;2012年2月19日“;UNIX中的最新版本,bash,unix,date,unix-timestamp,Bash,Unix,Date,Unix Timestamp,在UNIX中,如何转换为日期字符串,如: 19-FEB-12 16-FEB-12 05-AUG-09 我需要它将这些日期与服务器上的当前时间进行比较。要将日期转换为自纪元起的秒数,请执行以下操作: date --date="19-FEB-12" +%s 当前时代: date +%s 所以,既然你的约会是在过去: NOW=`date +%s` THEN=`date --date="19-FEB-12" +%s` let DIFF=$NOW-$THEN echo "The differenc

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

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

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

要将日期转换为自纪元起的秒数,请执行以下操作:

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日期的差异

  • -j
    阻止
    日期
    尝试设置时钟
  • 输入格式必须明确设置为
    -f
  • 输入日期是常规参数,而不是选项(即
    -d
  • 如果日期未指定时间,请改用当前时间 午夜时分

  • 这里有一种使用
    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