日期命令:date

QuibblerQuibbler 2021-06-09 约 8 分钟 1924 次阅读

日期命令: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

相关推荐

精选
获取系统SDK版本、判断手机ROM
Code

获取系统SDK版本、判断手机ROM

Build获取系统SDK版本Android中部分API的使用,需要在特定的SDK版本之后才能使用,因此在兼容老版本SDK的时候,经常需要判断API的版本。各种Android版本的对应关系参考《Android各版本对应的SDK版本》判断手机ROM有时候需要判断手机系统的ROM,检测ROM是MIUI、EMUI还是Flyme,可以使用getprop命令,去系统build.prop文件(关于build.p

3.7k
精选
AndroidStudio中各种中文乱码问题
Code

AndroidStudio中各种中文乱码问题

AndroidStudio中各种中文乱码问题1、编译Java错误信息乱码在出现这个Annotation processors must be explicitly declared now...问题的时候,正好也发现AndroidStudio Build Output错误信息都乱码。经常遇到各种问题,习惯了,现在遇到的问题,都是以后的答案。 1.1、修改项目build.gradle(无效)在整个p

2.4k
AndroidStudio 报错:has no declaration in the base values folder
Code

AndroidStudio 报错:has no declaration in the base values folder

在资源文件中正常定义的值,也能编译运行。昨天还正常,今天一打开就报错。应该又是AndroidStudio自身的Bug了。原因众说纷纭,参考Stack Overflow 一篇类似的讨论。解决:File => Invalidate Caches / Restart => Invalidate and Restart.

4.4k