使用Linux的同学应该对linux的`date`命令不会陌生,经常需要在命令行敲一下这个命令获取当前时间。然而这只是他的能力冰山一角。

文章每周持续更新,各位的「三连」是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇)

今天给项目写了个脚本需要获取前一天的时间,本来先获取今天的然后减一下,如果是1号的话还要考虑大小月份挺复杂的,于是去查了一下手册date命令原生支持,喜出望外,今天就详细说说这个看起来不起眼的date命令。

使用Linux的同学应该对linux的date命令不会陌生,经常需要在命令行敲一下这个命令获取当前时间。然而这只是他的能力冰山一角。

  1. [lemon@localhost ~]$ date
  2. 2020 02 12 星期三 19:51:46 CST
  1. [lemon@localhost ~]$ date +%s
  2. 1581508426
  1. [lemon@localhost ~]$ date -d "@1581508426"
  2. 2020 02 12 星期三 19:53:46 CST
  1. [lemon@localhost ~]$ date -d '02/22/2222 07:21:22' +%s
  2. 7956832882
  3. #或者
  4. [lemon@localhost ~]$ date -d '2222-02-22 07:21:22' +"%s"
  5. 7956832882
  1. [lemon@localhost ~]$ date "+%Y-%m-%d"
  2. 2020-02-12
  3. [lemon@localhost ~]$ date "+%H:%M:%S"
  4. 20:01:53
  5. [lemon@localhost ~]$ date "+%Y-%m-%d %H:%M:%S"
  6. 2020-02-12 20:02:06

具体的格式参考man手册:

  1. 格式 FORMAT 控制着输出格式. 仅当选项指定为全球时间时本格式才有效。 分别解释如下:
  2. %% 文本的 %
  3. %a 当前区域的星期几的简写 (Sun..Sat)
  4. %A 当前区域的星期几的全称 (不同长度) (Sunday..Saturday)
  5. %b 当前区域的月份的简写 (Jan..Dec)
  6. %B 当前区域的月份的全称(变长) (January..December)
  7. %c 当前区域的日期和时间 (Sat Nov 04 12:02:33 EST 1989)
  8. %d (月份中的)几号(用两位表示) (01..31)
  9. %D 日期(按照 月/日期/年 格式显示) (mm/dd/yy)
  10. %e (月份中的)几号(去零表示) ( 1..31)
  11. %h %b
  12. %H 小时(按 24 小时制显示,用两位表示) (00..23)
  13. %I 小时(按 12 小时制显示,用两位表示) (01..12)
  14. %j (一年中的)第几天(用三位表示) (001..366)
  15. %k 小时(按 24 小时制显示,去零显示) ( 0..23)
  16. %l 小时(按 12 小时制显示,去零表示) ( 1..12)
  17. %m 月份(用两位表示) (01..12)
  18. %M 分钟数(用两位表示) (00..59)
  19. %n 换行
  20. %p 当前时间是上午 AM 还是下午 PM
  21. %r 时间,按 12 小时制显示 (hh:mm:ss [A/P]M)
  22. %s 197011000秒到现在历经的秒数 (GNU扩充)
  23. %S 秒数(用两位表示)(00..60)
  24. %t 水平方向的 tab 制表符
  25. %T 时间,按 24 小时制显示(hh:mm:ss)
  26. %U (一年中的)第几个星期,以星期天作为一周的开始(用两位表示) (00..53)
  27. %V (一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (01..52)
  28. %w 用数字表示星期几 (0..6); 0 代表星期天
  29. %W (一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (00..53)
  30. %x 按照 (mm/dd/yy) 格式显示当前日期
  31. %X 按照 (%H:%M:%S) 格式显示当前时间
  32. %y 年的后两位数字 (00..99)
  33. %Y 年(用 4 位表示) (1970...)
  34. %z 按照 RFC-822 中指定的数字时区显示(如, -0500) (为非标准扩充)
  35. %Z 时区(例如, EDT (美国东部时区)), 如果不能决定是哪个时区则为空
  1. [lemon@localhost ~]$ date -d next-day
  2. 2020 02 13 星期四 20:08:35 CST
  3. #你可以指定输出格式,比如
  4. [lemon@localhost ~]$ date -d next-day +%Y%m%d
  5. 20200213
  1. [lemon@localhost ~]$ date -d last-day
  2. 2020 02 11 星期二 20:11:35 CST
  3. #你也可以指定输出格式,比如
  4. [lemon@localhost ~]$ date -d last-day +%Y%m%d
  5. 20200211
  1. [lemon@localhost ~]$ date -d last-month
  2. 2020 01 12 星期日 20:13:20 CST
  3. #同样的你也可以指定输出格式,比如
  4. [lemon@localhost ~]$ date -d last-month +%Y-%m-%d
  5. 2020-01-12
  1. [lemon@localhost ~]$ date -d next-month
  2. 2020 03 12 星期四 20:15:44 CST
  3. [lemon@localhost ~]$ date -d next-month "+%Y-%m-%d %H:%M:%S"
  4. 2020-03-12 20:15:38
  1. [lemon@localhost ~]$ date -d next-year
  2. 2021 02 12 星期五 20:17:21 CST
  1. [lemon@localhost ~]$ date -d last-year
  2. 2019 02 12 星期二 20:17:29 CST

可以微信搜索公众号「 后端技术学堂 」回复「资料」有我给你准备的各种编程学习资料。文章每周持续更新,我们下期见!

版权声明:本文为NanoDragon原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/NanoDragon/p/12643205.html