【问题标题】:How To Convert Date "+%F %T" to RFC 2822 Format For List Of Dates如何将日期“+%F %T”转换为 RFC 2822 格式的日期列表
【发布时间】:2017-10-11 19:59:29
【问题描述】:

我已阅读以下问题:Convert from Unix time at the command lineConvert Any Format In Unix。我尝试了几种不同的方法将我的时间2017-10-12 00:34:26date "+%F %T" 格式)转换为date -R 格式或Thu, 12 Oct 2017 00:34:26 -0400

由于我需要转换如下所示的日期列表,因此我将 $etime 用作文件中一行的变量(直到我得到它的工作)。

file1:

2017-10-12 00:22:26
2017-10-12 00:25:26
2017-10-12 00:28:26
2017-10-12 00:31:26
2017-10-12 00:34:26

第一次尝试:

etime=$(echo "2017-10-12 00:34:26"); date -Rd @$etime

第二次尝试:

etime=$(echo "2017-10-12 00:34:26"); | gawk '{print strftime("%c", $0)}'

虽然这两个不起作用,但我希望让它们起作用,然后在file1 中为每一行循环命令,结果将是:

Thu, 12 Oct 2017 00:22:26 -0400
Thu, 12 Oct 2017 00:25:26 -0400
Thu, 12 Oct 2017 00:28:26 -0400
Thu, 12 Oct 2017 00:31:26 -0400
Thu, 12 Oct 2017 00:34:26 -0400

有谁知道在列表中转换这些日期格式的有效方法?非常感谢您对该问题的帮助和支持。

【问题讨论】:

    标签: linux bash date datetime awk


    【解决方案1】:

    -f 选项需要 GNU 日期:

    date -R -f file1
    

    导致

    Thu, 12 Oct 2017 00:22:26 -0400
    Thu, 12 Oct 2017 00:25:26 -0400
    Thu, 12 Oct 2017 00:28:26 -0400
    Thu, 12 Oct 2017 00:31:26 -0400
    Thu, 12 Oct 2017 00:34:26 -0400
    

    来自date 手册页:

    -f, --file=<i>DATEFILE</i>
    喜欢--dateDATEFILE

    每行一次

    -d, --date=<i>STRING</i>
    STRING 描述的显示时间,而不是“现在”

    【讨论】:

      【解决方案2】:

      GNU awk 解决方案:

      awk '{ gsub(/[-:]/," "); print strftime("%c %z",mktime($0)) }' file
      
      • %c - 区域设置的“适当”日期和时间表示。 (这是“C”语言环境中的“%A %B %d %T %Y”。)

      • %z - “+HHMM”格式的时区偏移量(例如,生成 RFC 822/RFC 1036 日期标头所需的格式)

      【讨论】:

      • 如此接近!你知道如何去掉输出中的 AM/PM 吗?我只需要 24 小时制。
      • 我得到这样的输出(第一行)Thu, Oct 12, 2017 12:22:26 AM -0400,但我认为 RFC 会是这样的:Thu, Oct 12, 2017 00:22:26 -0400。你知道怎么做吗?非常感谢您的帮助。
      • 越来越近了......现在我得到了这个Thu Oct 12 00:22:26 2017 -0400。 (年份不合适,逗号也不见了)。
      • 关于如何删除AM/PM的任何想法?
      • 不:-/ 它给了:Thu, Oct 12, 2017 12:22:26 AM -0400
      猜你喜欢
      • 2015-12-04
      • 2011-03-28
      • 2012-01-28
      • 1970-01-01
      • 2014-10-11
      • 2010-10-27
      • 2012-12-08
      • 2013-08-17
      • 1970-01-01
      相关资源
      最近更新 更多