MacOS 上的 date 命令和 Linux 上的 date 命令使用方式并不一样,像我这种经常工作在这两种系统上的人来说,不熟悉它们的区别,使用起来实在是难受。 遇到不会了就查一查,今天还是想写一篇文章来记录一下,作个总结。这篇文章只会讲跟日常使用相关的命令,像是使用 date 来修改系统时间这种极其低频的用法(至少对我来说)我就不叙述了。 文章没整理完,等我学到了新的再增加。(只是没写完,我是认真把两个 date 的 man 手册看了的,写博客的好处,哈哈。)
date 的功能:设置或显示时间。默认行为是以默认格式输出当前时间。可以指定输入格式和输入时间,可以指定输出格式。
基本约定:中括号内的参数表示是可选的。
语法概要
MacOS:
date [+输出格式]
date -r 秒数 [+输出格式]
date -jf 输入格式 输入时间 [+输出格式]
Linux:
date [+输出格式]
date -d @秒数 [+输出格式]
date -d 输入时间及格式 [+输出格式]
格式控制
只列出相当小一部分,完整的请参考各自 date 的文档。
格式 | 说明 |
---|---|
%% | % |
%Y | 年,四位。 |
%y | 年,后两位。 |
%m | 月,带前缀 0。01..12 |
%d | 日,带前缀 0。 |
%H | 时(24小时制)。00..23 |
%I | 时(12小时制)。01..12 |
%M | 分。00..59 |
%S | 秒。00..60 |
%j | 一年中的第几天。001..366 |
%s | 从 Unix Epoch 开始的秒数(即 Unix 时间戳) |
另外还有一部分格式用于控制填充(放在 % 后面,其它格式前,比如:%-m 表示不带前缀 0 的月份):
格式 | 说明 |
---|---|
- | 不要默认填充 0 |
0 | 用 0 填充 |
显示当前时间
命令相同:date [+输出格式]
。
1 2 3 4 5 6 7 |
|
其中的 CST
是 China Standard Time
中国标准时间 的意思。
显示时间戳对应的时间
在 MacOS 上的命令语法:date -r 秒数
。
这个秒数即是最常见的时间戳(精确到秒),从 Unix 纪元(1970年1月1日0时0分0秒)开始算起。 秒数可以是十进制、八进制与十六进制(程序员应该知道不同的进制怎么写吧?)。
1 2 3 4 5 6 7 8 9 10 11 |
|
在 Linux 的格式不一样:date -d @秒数
或 date --date=@秒数
。
这个秒数的含义同上,但是只支持十进制。
1 2 3 4 5 6 7 8 9 |
|