Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux “如何转换日期”+;%F%T“;至RFC 2822日期列表格式_Linux_Bash_Date_Datetime_Awk - Fatal编程技术网

Linux “如何转换日期”+;%F%T“;至RFC 2822日期列表格式

Linux “如何转换日期”+;%F%T“;至RFC 2822日期列表格式,linux,bash,date,datetime,awk,Linux,Bash,Date,Datetime,Awk,我已阅读以下问题:及。我尝试了几种不同的方法将我的时间2017-10-12 00:34:26格式转换为date“+%F%T”格式或2017年10月12日星期四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

我已阅读以下问题:及。我尝试了几种不同的方法将我的时间
2017-10-12 00:34:26
格式转换为
date“+%F%T”
格式或
2017年10月12日星期四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

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

GNUawk解决方案:

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

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


    • 这需要
      -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
      
      日期
      手册页:

      -f
      -file=DATEFILE

      ——日期
      ;日期文件的每行一次

      -d
      -date=STRING

      显示由
      字符串
      描述的时间,而不是“现在”


      太近了!你知道如何去掉输出中的AM/PM吗?我只需要24小时的时钟。我得到这样的输出(第一行)
      2017年10月12日星期四12:22:26 AM-0400
      ,但我想RFC会是这样的:
      2017年10月12日星期四00:22:26-0400
      。你知道怎么做吗?非常感谢您的帮助。越来越近了…现在我收到了这个
      2017年10月12日星期四00:22:26-0400
      。(这一年不合适了,逗号也不见了)。关于如何删除
      AM/PM
      ,有什么想法吗?没有:-/它给出了:
      2017年10月12日星期四12:22:26 AM-0400