【busybox记录】【shell指令】date

目录

内容来源:

【GUN】【date】指令介绍

【busybox】【date】指令介绍

【linux】【date】指令介绍

使用示例:

打印前天的日期:

打印三个月零一天后的日期:

打印当年圣诞节的年数:

打印当前的全月名称和月的日期:

要打印一个没有前导零的日期,您可以使用(GNU扩展)' - '标志来完全抑制填充:

在设置系统时钟时,以许多非gnu版本的date所需的格式打印当前日期和时间:

将系统时钟拨快两分钟:

要以Internet RFC 5322格式打印日期,

如果未在date字符串中指定时区信息,则date在解释字符串时使用计算机的时区概念。

通常秒数会忽略闰秒,但有些系统是例外。

常用组合指令:

指令不常用/组合用法还需继续挖掘:


内容来源:

        GUN : Coreutils - GNU core utilities

        busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客

【GUN】【date】指令介绍

date:打印或设置系统日期和时间
简介:
date [option]... [+format]
date [-u|--utc|--universal] [ MMDDhhmm[[CC]YY][.ss] ]
date 命令用来显示日期和时间。使用 --set (-s)选项,或使用 ‘MMDDhhmm[[CC]YY][.ss]’ 设置日期和时间。
调用不带格式参数的date等同于使用依赖于LC_TIME区域设置类别的默认格式调用date。
在默认的C语言环境中,此格式为 ‘'+%a %b %e %H:%M:%S %Z %Y'’ ,因此输出看起来像‘Thu Jul 9 17:00:00 EDT 2020’.
通常情况下,date使用TZ环境变量指定的时区规则,如果没有设置TZ,则使用系统默认规则。参见GNU C库参考手册中的“用TZ指定时区”一节。
退出状态为0表示成功,非0表示失败。
1 指定日期输出格式
如果给定一个以' + '开头的参数,date将以该参数定义的格式打印当前日期和时间(或由 --date选项指定的日期和时间,见下文),这与strftime函数的格式类似。
除了以' % '开头的转换说明符外,格式字符串中的字符将被原样打印。下面描述了转换说明符。

1.1 时间转换说明符
与时间相关的日期转换说明符。
‘%H’    小时(' 00 '…' 23 ')
‘%I’    小时(' 01 '…' 12 ')
‘%k’    小时,空格填充(' 0 '…' 23 ');相当于‘%_H’。这是一个GNU扩展。
‘%l’    小时,空格填充(' 1 '…' 12 ');相当于‘%_I’。这是一个GNU扩展。
‘%M’    分钟(' 00 '…' 59 ')
‘%N’    纳秒(' 000000000 '…' 999999999 ')。这是一个GNU扩展。
‘%p’    区域设置相当于' AM '或' PM ';在许多地方空白。中午被当作“PM”,午夜被当作“AM”。
‘%P’    类似‘%p’,只是小写。这是一个GNU扩展。
‘%r’    区域设置的12小时时钟时间(例如,' 11:11:04 PM ')
‘%R’    24小时,小时和分钟。与 ‘%H:%M’ 相同。
‘%s’    从 Epoch 开始的秒数,即从UTC时间1970-01-01 00:00开始。除非支持闰秒,否则不计算闰秒。参见[%s-examples],第202页的示例。这是一个GNU扩展。
‘%S’    秒(' 00 '…' 60 ')。如果支持闰秒,这个值可能是' 60 '。
‘%T’    24小时,小时、分、秒。与 ‘%H:%M:%S’ 相同。
‘%X’    区域设置的时间表示(例如,' 23:13:48 ')
‘%z’    四位数字时区,例如' -0600 '或' +0530 ',如果无法确定时区,则为' -0000 '。该值使用TZ环境变量指定的时区规则,反映适合当前时间的数字时区。
		如果时区的数字偏移量为零并且其缩写以' - '开头,则无法确定时区。时间(以及可选的时区规则)可以被 --date选项覆盖。
‘%:z’   带‘:’的数字时区,例如' -06:00 '或' +05:30 '),如果无法确定时区,则使用' -00:00 '。这是一个GNU扩展。
‘%::z’  使用‘:’(例如,' -06:00:00 '或' +05:30:00 ')的数字时区到最近的秒,如果无法确定时区,则使用' -00:00:00 '。这是一个GNU扩展。
‘%:::z’ 带有‘:’的数字时区,使用最低必要精度(例如,' -06 ',' +05:30 '或' -04:56:02 '),如果无法确定时区,则使用' -00 '。这是一个GNU扩展。
‘%Z’    按字母顺序排列的时区缩写(例如,‘EDT’),如果无法确定时区,则不显示。请参阅%z’了解如何确定它。

1.2 日期转换说明符
与日期相关的日期转换说明符。
‘%a’ 区域设置的工作日缩写名(例如,“Sun”)
‘%A’ 域设置的完整工作日名称,可变长度(例如,' Sunday ')
‘%b’ 域设置的缩写月名(例如,' Jan ')
‘%B’ 域设置的完整月份名称,可变长度(例如,' January ')
‘%c’ 域设置的日期和时间(例如,‘Thu Mar 3 23:05:25 2020’)
‘%C’ 世纪。这类似于‘%Y’,只是省略了最后两位数字。例如,如果‘%Y’为“2019”,则为“20”;如果‘%Y’为“-001”,则为“-0”。通常至少有两个字符,但也可能更多。
‘%d’ 月中的第几天(例如' 01 ')
‘%D’ 日期;与‘%m/%d/%y’相同
‘%e’ 月份的日期,空格填充;与‘%_d’相同
‘%F’ ISO 8601 格式的“%F”完整日期;类似于‘%+4Y-%m-%d’,除了任何标志或字段宽度覆盖' + '和(减去6后)' 4 '。
     对于日期格式来说,这是一个很好的选择,因为它是标准的,并且在年份在0000范围内的通常情况下易于排序9999.
‘%g’ 年对应于ISO周数,但不包含世纪(范围' 00 '到' 99 ')。它具有与‘%Y’相同的格式和值,除了如果ISO周数(参见‘%V’)属于前一年或下一年,则使用该年份。
‘%G’ 与ISO周数对应的“%G”年。它具有与' %Y '相同的格式和值,除了如果ISO周数(参见‘%V’)属于上一年或下一年,则使用该年份。通常只有在也使用‘%V’时才有用;
     例如,格式‘%G-%m-%d’可能是错误的,因为它将ISO周数年与传统的月和日结合在一起。
‘%h’ 与‘%b’相同
‘%j’ 年月日(' 001 '…' 366 ')
‘%m’ 月(' 01 '…' 12 ')
‘%q’ 季度(' 1 '…' 4 ')
‘%u’ 星期几(' 1 ' . . ' 7 '),其中' 1 '对应星期一
‘%U’ 一年中的周数,星期日作为一周的第一天(“00”…“53”)。新年中第一个星期天之前的日子属于第0周。
‘%V’ ISO周数,即一年中的周数,星期一为一周的第一天(' 01 '…' 53 ')。如果包含1月1日的一周在新的一年中有四天或更多天,则将其视为第一周;
     否则为前一年第53周,下一周为第1周。(参见ISO 8601标准。)
‘%w’ 星期几(' 0 ' . . ' 6 '),其中0对应星期日
‘%W’ 年的周数,星期一作为一周的第一天(' 00 '…' 53 ')。新年中第一个星期一之前的日子属于第0周。
‘%x’ 区域设置的日期表示(例如,' 12/31/99 ')
‘%y’ 年份的后两位数字(' 00 '…' 99 ')
‘%Y’ 这通常至少是四个字符,但也可能更多。年份“0000”在年份“0001”之前,年份“-001”在年份“0000”之前。

1.3 文字转换说明符
生成字面值字符串的日期转换说明符。
‘%%’ 是字面量%
‘%n’ 是换行符
‘%t’ 是一个水平制表符

1.4填充和其他标志
除非另有指定,否则date通常用零填充数字字段,因此,例如,数字月份总是作为两位数字输出。大多数数值字段都填充在左侧。
但是,由于纳秒通常在 ‘%s.%-N’ 等格式的小数点之后使用,因此在右侧填充了纳秒。此外,由于Epoch没有自然宽度,因此不会填充秒。
以下可选标志可以出现在‘%’之后:
‘-’  (连字符)不要填充字段;如果输出用于人类消费,则有用。这是一个GNU扩展。
     作为一种特殊情况,‘%-N’只输出足够的尾随数字以不丢失信息,假设时间戳的分辨率与当前硬件时钟相同。
	 例如,如果硬件时钟分辨率为1微秒,则 ‘%s.%-N’ 输出类似‘1640890100.395710’。
‘_’  (下划线)填充空格;如果您需要输出固定数量的字符,则非常有用,但是零太分散注意力了。这是一个GNU扩展。
‘0’  用零填充,即使转换说明符通常会用空格填充。
‘+’  键盘上有零,比如' 0 '。此外,如果年份超过9999或字段宽度超过4,则在年份前加“+”;类似地,如果任何世纪数超过99或字段宽度超过2,则在其前面加上' + '。
     它支持ISO 8601格式的日期在遥远的未来;例如,命令 date --date=12019-02-25 +%+13F  输出字符串‘+012019-02-25’。
‘^’  如果可能,请使用大写字符。这是一个GNU扩展。
‘#’  如果可能的话,使用相反的大小写字符。一个通常是大写的字段变成了小写,反之亦然。这是一个GNU扩展。
下面是一些填充的例子:
date +%d/%m -d "Feb 1"
⇒ 01/02
date +%-d/%-m -d "Feb 1"
⇒ 1/2
date +%_d/%_m -d "Feb 1"
⇒ 1/ 2
您可以选择将字段宽度指定为十进制数(如果存在,则在任何标志之后)。
如果字段输出的自然大小少于指定的字符数,则结果通常被右写,调整并填充到给定的大小。例如,‘%9B’在宽度为9的字段中打印右侧调整后的月份名称。纳秒被左调整,并被截断或填充到字段宽度。
可选修饰符可以遵循可选标志和宽度规范。修饰语是:
‘E’ 使用区域设置的日期和时间的替代表示。此修饰符适用于' %c '、' %c '、' %x '、' %x '、' %y '和' %y '转换说明符。例如,在日本语言环境中,' %Ex '可能产生基于日本皇帝统治的日期格式。
‘O’ 使用区域设置的备用数字符号表示数字。此修饰符仅适用于数字转换说明符。
如果格式支持该修饰符,但没有可用的替代表示,则忽略它。
POSIX仅为' %C ', ' %F ', ' %G '和' %Y '(都没有修饰符)指定标志和字段宽度的行为,并且要求当且仅当字段宽度也存在时才存在标志。标志、字段宽度和修饰符的其他组合是GNU扩展。
2 设置时间
您必须具有适当的权限才能设置系统时钟。要使更改在重新启动时保持不变,可能需要从系统时钟更新硬件时钟,这在系统上可能不会自动发生。
要设置时钟,可以使用 --set (-s)选项(参见第21.1.3节[日期选项],第199页)。
要设置时钟而不使用GNU扩展,您可以给date一个形式为‘MMDDhhmm[[CC]YY][.ss]’,其中每个两个字母组成部分代表两个数字,其含义如下:
MM month
DD day within month
hh hour
mm minute
CC first two digits of year (optional)
YY last two digits of year (optional)
ss second (optional)
 --date和 --set选项不能与上述格式的参数一起使用。
 --universal选项可以与这样的参数一起使用,以指示指定的日期和时间相对于世界时而不是相对于本地时区。
3 日期选项
程序接受以下选项。请参见第2章[常用选项],第2页。除了-u之外,这些选项都是POSIX的GNU扩展。
指定要显示日期的所有选项都是互斥的。即:--date, --file, --reference, --resolution.
‘-d datestr’
‘--date=datestr’
	显示 datestr 中指定的日期和时间,而不是当前日期和时间。Datestr几乎可以是任何通用格式。
	它可以包含月份名称、时区、 ‘am’  ‘pm’, ‘yesterday 等。
	例如,--date="2020-07-21 14:19:13.489392193 +0530"指定2020年7月21日下午2:19:13 (UTC以东5小时30分钟)后489392193纳秒的瞬间。
	日期必须是独立于语言环境的格式。例如,下面的' LC_TIME=C '需要在许多地区打印正确的日期:
		date -d "$(LC_TIME=C date)"
	参见第29章[日期输入格式],第245页。
‘--debug’ 
	注释已解析的日期,显示有效时区,并警告可能的误用。
‘-f datefile’
‘--file=datefile’
	使用 -d 解析datefile中的每一行,并显示结果日期和时间。如果datefile为' - ',则使用标准输入。当您有许多日期需要处理时,这很有用,因为多次启动日期可执行文件的系统开销可能相当大。
‘-I[timespec]’
‘--iso-8601[=timespec]’
	使用ISO 8601格式显示日期,‘%Y-%m-%d’。
	参数timespec指定要包含的时间附加项的数量。它可以是下列情况之一:
		‘auto’     只打印日期。如果省略timespec,这是默认值。这类似于%Y-%m-%d的格式。
		‘hours’    也可以打印时间和时区。这类似于%Y-%m-%dT%H%:z的格式。
		‘minutes’  也可以打印minutes。这类似于%Y-%m-%dT%H:% m %:z的格式。
		‘seconds’  也可以打印秒。这类似于%Y-%m-%dT%H:% m:%S%:z的格式。
		‘ns’       也 可以打印纳秒。这类似于%Y-%m-%dT%H:% m:%S,%N%:z的格式。
    无论当前语言环境如何,这种格式始终适合作为 --date (-d)和 --file (-f)选项的输入。
‘-r file’
‘--reference=file’
	显示上次修改文件的日期和时间,而不是当前的日期和时间。
‘--resolution’
	显示时间戳分辨率,而不是时间。按日期输出的当前时钟时间戳是时间戳分辨率的整数倍。使用此选项,格式默认为‘%s.%N’。例如,时钟分辨率为1毫秒,输出为:
		0.001000000
‘-R’
‘--rfc-email’
	使用格式 ‘%a, %d %b %Y %H:%M:%S %z’ 显示日期和时间,在C语言环境中求值,因此缩写始终是英语。例如:
		Mon, 09 Jul 2020 17:00:00 -0400
	此格式符合Internet rfc 5322 (https://datatracker.ietf.org/doc/rfc5322/)2822 (https://datatracker.ietf.org/doc/rfc2822/)和822 (https://datatracker.ietf.org/doc/rfc822/)是当前和以前的互联网电子邮件标准。
	为了与旧版本的date兼容, --rfc-2822和 --rfc-822是 --rfc-email.的别名。
‘--rfc-3339=timespec’
	使用Internet RFC 3339 (https://datatracker.ietf.org/doc/rfc3339/)指定的格式显示日期。
	这类似于 --iso-8601,只不过是用空格而不是' T '分隔日期和时间,用句号而不是逗号分隔秒和次秒。
	无论当前语言环境如何,这种格式始终适合作为 --date (-d)和 --file (-f)选项的输入。参数timespec指定要包含多少时间。它可以是下列情况之一:
		‘date’    只打印完整日期,例如‘2020-07-21’。这类似于格式‘%Y-%m-%d’.
		‘seconds’ 打印以空格分隔的完整日期和时间,例如‘2020-07-21 04:30:37+05:30’. 
		          输出以数字时间偏移结束;这里的“+05:30”表示当地时间比UTC晚5小时30分钟。这类似于格式‘%Y-%m-%d %H:%M:%S%:z’
		‘ns’      类似'秒',但也可以打印纳秒,例如‘2020-07-21 04:30:37.998458565+05:30’.
		          这就像格式的 ‘%Y-%m-%d %H:%M:%S.%N%:z’。
‘-s datestr’
‘--set=datestr’
	将日期和时间设置为datestr。参见上面的d。参见第21.1.2节[设置时间],第199页。
‘-u’
‘--utc’
‘--universal’
	通过将TZ环境变量设置为字符串' UTC0 '来操作通用时间。
	UTC是协调世界时(Coordinated Universal Time)的缩写,成立于1960年。由于历史原因,世界时间通常被称为“格林威治标准时间”(GMT)。
	通常情况下,系统忽略闰秒,从而实现近似UTC而不是真正的UTC。

【busybox】【date】指令介绍

[root@localhost bin]# ./date --help
BusyBox v1.36.1 (2024-04-16 11:16:28 EDT) multi-call binary.

Usage: date [OPTIONS] [+FMT] [[-s] TIME]

Display time (using +FMT), or set time

	-u		Work in UTC (don't convert to local time)
	[-s] TIME	Set time to TIME
	-d TIME		Display TIME, not 'now'
	-D FMT		FMT (strptime format) for -s/-d TIME conversion
	-r FILE		Display last modification time of FILE
	-R		Output RFC-2822 date
	-I[SPEC]	Output ISO-8601 date
			SPEC=date (default), hours, minutes, seconds or ns

Recognized TIME formats:
	@seconds_since_1970
	hh:mm[:ss]
	[YYYY.]MM.DD-hh:mm[:ss]
	YYYY-MM-DD hh:mm[:ss]
	[[[[[YY]YY]MM]DD]hh]mm[.ss]
	'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead

【linux】【date】指令介绍

[root@localhost bin]# date --help
用法:date [选项]... [+格式]
 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.

必选参数对长短选项同时适用。
  -d, --date=STRING          display time described by STRING, not 'now'
      --debug                annotate the parsed date,
                              and warn about questionable usage to stderr
  -f, --file=DATEFILE        like --date; once for each line of DATEFILE
  -I[FMT], --iso-8601[=FMT]  output date/time in ISO 8601 format.
                               FMT='date' for date only (the default),
                               'hours', 'minutes', 'seconds', or 'ns'
                               for date and time to the indicated precision.
                               Example: 2006-08-14T02:34:56-06:00
  -R, --rfc-email            output date and time in RFC 5322 format.
                               Example: Mon, 14 Aug 2006 02:34:56 -0600
      --rfc-3339=FMT         output date/time in RFC 3339 format.
                               FMT='date', 'seconds', or 'ns'
                               for date and time to the indicated precision.
                               Example: 2006-08-14 02:34:56-06:00
  -r, --reference=FILE       display the last modification time of FILE
  -s, --set=STRING           set time described by STRING
  -u, --utc, --universal     print or set Coordinated Universal Time (UTC)
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

给定的格式FORMAT 控制着输出,解释序列如下:

  %%	一个文字的 %
  %a	当前locale 的星期名缩写(例如: 日,代表星期日)
  %A	当前locale 的星期名全称 (如:星期日)
  %b	当前locale 的月名缩写 (如:一,代表一月)
  %B	当前locale 的月名全称 (如:一月)
  %c	当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25)
  %C	世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
  %d	按月计的日期(例如:01)
  %D	按月计的日期;等于%m/%d/%y
  %e	按月计的日期,添加空格,等于%_d
  %F	完整日期格式,等价于 %Y-%m-%d
  %g	ISO-8601 格式年份的最后两位 (参见%G)
  %G	ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用
  %h	等于%b
  %H	小时(00-23)
  %I	小时(00-12)
  %j	按年计的日期(001-366)
  %k   hour, space padded ( 0..23); same as %_H
  %l   hour, space padded ( 1..12); same as %_I
  %m   month (01..12)
  %M   minute (00..59)
  %n   a newline
  %N   nanoseconds (000000000..999999999)
  %p   locale's equivalent of either AM or PM; blank if not known
  %P   like %p, but lower case
  %q   quarter of year (1..4)
  %r   locale's 12-hour clock time (e.g., 11:11:04 PM)
  %R   24-hour hour and minute; same as %H:%M
  %s   seconds since 1970-01-01 00:00:00 UTC
  %S	秒(00-60)
  %t	输出制表符 Tab
  %T	时间,等于%H:%M:%S
  %u	星期,1 代表星期一
  %U	一年中的第几周,以周日为每星期第一天(00-53)
  %V	ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)
  %w	一星期中的第几日(0-6),0 代表周一
  %W	一年中的第几周,以周一为每星期第一天(00-53)
  %x	当前locale 下的日期描述 (如:12/31/99)
  %X	当前locale 下的时间描述 (如: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 填充。
The following optional flags may follow '%':

  -  (hyphen) do not pad the field
  _  (underscore) pad with spaces
  0  (zero) pad with zeros
  ^  use upper case if possible
  #  use opposite case if possible

在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。
作为一个可选的修饰声明,它可以是E,在可能的情况下使用本地环境关联的
表示方式;或者是O,在可能的情况下使用本地环境关联的数字符号。

Examples:
Convert seconds since the epoch (1970-01-01 UTC) to a date
  $ date --date='@2147483647'

Show the time on the west coast of the US (use tzselect(1) to find TZ)
  $ TZ='America/Los_Angeles' date

Show the local time for 9AM next Friday on the west coast of the US
  $ date --date='TZ="America/Los_Angeles" 09:00 next Fri'

GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 date 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/date>
或者在本地使用:info '(coreutils) date invocation'

使用示例:

打印前天的日期:

date --date='2 days ago'

打印三个月零一天后的日期:

date --date='3 months 1 day'

打印当年圣诞节的年数:

date --date='25 Dec' +%j

打印当前的全月名称和月的日期:

date '+%B %d'

但这可能不是您想要的,因为对于一个月的前九天,‘%d’扩展为一个填零的两位数字段,例如‘date -d 1may '+%B %d'’将打印‘May 01’。

要打印一个没有前导零的日期,您可以使用(GNU扩展)' - '标志来完全抑制填充:

date -d 1may '+%B %-d'

在设置系统时钟时,以许多非gnu版本的date所需的格式打印当前日期和时间:

date +%m%d%H%M%Y.%S

将系统时钟拨快两分钟:

date --set='+2 minutes'

要以Internet RFC 5322格式打印日期,

date --rfc-email

输出:

Tue, 09 Jul 2020 19:00:37 -0400

要将日期字符串转换为自Epoch (1970-01-01 00:00 UTC)以来的秒数,使用带‘%s’格式的 --date选项。

这在按日期排序和/或绘图和/或比较数据时很有用。

下面的命令输出纪元后两分钟从Epoch到现在的秒数:

date --date='1970-01-01 00:02:00 +0000' +%s

120

要将日期字符串从一个时区转换为另一个时区,请在环境中指定‘TZ="from"’,并在——date选项中指定‘TZ="to"’

TZ="Asia/Tokyo" date --date='TZ="America/New_York" 2023-05-07 12:23'

Mon May 8 01:23:00 JST 2023

如果未在date字符串中指定时区信息,则date在解释字符串时使用计算机的时区概念。

例如,如果你的计算机的时区是马萨诸塞州的剑桥,它当时比UTC晚5小时(即18000秒):

# local time zone used

date --date='1970-01-01 00:02:00' +%s

18120

如果您正在排序或绘图日期数据,您的原始日期值可能表示为自Epoch以来的秒。但很少有人会看到日期“1577836800”,然后漫不经心地说:“哦,这是英国格林威治2020年的第一秒。”

date --date='2020-01-01 UTC' +%s

1577836800

另一种选择是使用 --utc (-u)选项。然后你可以从日期字符串中省略' UTC '。虽然这对' %s '和许多其他格式序列产生相同的结果,但时区偏移量不同于零,但对于' %z '等依赖于区域的格式会产生不同的结果。

date -u --date=2020-07-21 +%s

1595289600

要将如此庞大的秒数转换为更易读的形式,可以使用如下命令:

date -d @1595289600 +"%F %T %z"

2020-07-20 20:00:00 -0400

通常输出相对于utc的日期和时间会更好:

date -u -d @1595289600 +"%F %T %z"

2020-07-21 00:00:00 +0000

通常秒数会忽略闰秒,但有些系统是例外。

因为闰秒是不可预测的,所以在计数中包含闰秒的非典型系统上,秒计数和未来时间戳之间的映射是不可靠的。

以下是两种系统如何处理2016年底的闰秒:

#典型的系统忽略闰秒:

date --date='2016-12-31 23:59:59 +0000' +%s

1483228799

date --date='2016-12-31 23:59:60 +0000' +%s

date:无效日期'2016-12-31 23:59:60 +0000'

date --date='2017-01-01 00:00:00 +0000' +%s

1483228800

#非典型系统计算闰秒:

date --date='2016-12-31 23:59:59 +0000' +%s

1483228825

date --date='2016-12-31 23:59:60 +0000' +%s

1483228826

date --date='2017-01-01 00:00:00 +0000' +%s

1483228827

常用组合指令:

NA

指令不常用/组合用法还需继续挖掘:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻面条EW

感谢您的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值