日期命令:date Linux

Quibbler 2021-6-9 1080

日期命令:date


        经常学习记录。前段时间用date -R命令修改commit日期,现在了解一下Linux中的这个命令。date常用于以给定的格式显示当前时间,或设置系统日期。

    git commit --amend --date="$(date -R)"



1、命令可选选项

        下面了解一下date命令的用法,--help显示帮助文档。

Usage:  date [OPTION]... [+FORMAT]
   or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]


1.1、主选参数

        可选参数有下面几个:

  -d, --date=STRING          显示由 STRING 描述的时间,而不是“现在”
  -f, --file=DATEFILE        类似--date; DATEFILE 的每一行解析一次日期
  -I[FMT], --iso-8601[=FMT]  以 ISO 8601 格式输出日期/时间。
  -R, --rfc-2822             以 RFC 2822 格式输出日期和时间。
      --rfc-3339=FMT         以 RFC 3339 格式输出日期/时间。
  -r, --reference=FILE       显示FILE的最后修改时间
  -s, --set=STRING           设置由 STRING 描述的时间
  -u, --utc, --universal     打印或设置协调世界时 (UTC)
  --help                     显示此帮助并退出
  --version                  输出版本信息并退出


1.2、日期格式参数

        FORMAT控制日期时间显示格式,必须以+开头。 全部参数如下:

  %%   %
  %a   区域设置的缩写工作日名称(例如,Sun)
  %A   区域设置的完整工作日名称(例如,星期日)
  %b   语言环境的缩写月份名称(例如,Jan)
  %B   语言环境的完整月份名称(例如,一月)
  %c   语言环境的日期和时间(例如,2005 年 3 月 3 日星期四 23:05:25)
  %C   世纪; 同%Y类似,除了最后两位数字(e.g., 20)
  %d   每月的第几天(例如,01)
  %D   日期; 与 %m/%d/%y 相同
  %e   一个月中的某一天,用空格填充;同 %_d
  %F   完整日期; 与 %Y-%m-%d 相同
  %g   ISO 周数年份的最后两位数字(见 %G)
  %G   ISO 周数的年份(见 %V); 通常只对 %V 有用
  %h   同%b
  %H   小时(00..23)
  %I   小时(01..12)
  %j   一年中的第几天 (001..366)
  %k   小时(0..23); 同 %_H
  %l   小时(1..12); 同 %_I
  %m   月(01..12)
  %M   分钟 (00..59)
  %n   换行
  %N   纳秒 (000000000..999999999)
  %p   locale 相当于 AM 或 PM; 如果不知道则为空白
  %P   同%p,但小写
  %r   语言环境的 12 小时时钟时间(例如,晚上 11:11:04)
  %R   24 小时制小时和分钟; 与 %H:%M 相同
  %s   自 1970-01-01 00:00:00 UTC 以来的秒数
  %S   秒 (00..60)
  %t   一个tab
  %T   时间; 与 %H:%M:%S 相同
  %u   星期几(1..7); 1 是星期一
  %U   年的周数,以星期日作为一周的第一天 (00..53)
  %V   ISO 周数,以星期一为一周的第一天 (01..53)
  %w   星期几(0..6); 0 是星期日
  %W   年的周数,星期一作为一周的第一天 (00..53)
  %x   语言环境的日期表示(例如 12/31/99)
  %X   语言环境的时间表示(例如,23:13:48)
  %y   年份的最后两位数 (00..99)
  %Y   年
  %z   +hhmm 数字时区(例如 -0400)
  %:z  +hh:mm 数字时区(例如 -04:00)
  %::z +hh:mm:ss 数字时区(例如,-04:00:00)
  %:::z 数字时区:达到必要的精度(例如,-04、+05:30)
  %Z   字母时区缩写(例如 EDT)

        默认情况下,日期用零填充数字字段。以下可选标志可以跟在“%”之后:

    -  (连字符)不要填充字段
    _  (下划线)用空格填充
    0  (零)用零填充
    ^  如果可能,请使用大写
    #  如果可能,使用相反的情况



2、date命令实践

        看的再多不如实践一次,详细的文档说明不如一个示例来的清晰。用几下date命令:

        通过date命令提取日期中的年份,日期为-d参数后面输入的STRING解析而来

$ date -d "20220628"   +%Y
2022

        新建一个文件data.txt,内容如下

20210506
20210502
20210504
20210505
20210508

        利用命令就可以从文件中逐行读取,并转换成日期

$ date -f data.txt
2021年05月 6日  0:00:00
2021年05月 2日  0:00:00
2021年05月 5日  0:00:00
2021年05月 4日  0:00:00
2021年05月 8日  0:00:00

        将日期转换成毫秒数,从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数。之前转换毫秒时间用的是在线工具:时间戳(Unix timestamp)转换

$ date +%s
1623059106

        再将秒数转换成日期

$ date --date="@1623059106"
2021年06月 7日 17:45:06

        直接输入date命令显示当前时间(格式可调)

$ date
Tue Jun  8 23:59:18     2021

$ date -R
Sat, 04 Dec 2021 08:52:24 +0800



参考文档:

        date: Print or set system date and time

        gnu/software/coreutils/date


不忘初心的阿甘
最新回复 (0)
    • 安卓笔记本
      2
        登录 注册 QQ
返回
仅供学习交流,切勿用于商业用途。如有错误欢迎指出:fluent0418@gmail.com