Linux获取当前日期+时间

前言

计算机系统时间是从 1970-01-01 00:00:00 开始计算的。

脚本

获取当前日期+时间

1
2
3
4
5
6
7
8
# 2022-05-16 21:05:53
currentTime =`date "+%Y-%m-%d %H:%M:%S"`
# 简写
currentTime =`date "+%F %T"`
# yyyy-MM-dd
currentTime =`date "+%Y-%m-%d"`
# HH:mm:ss
currentTime =`date "+%H:%M:%S"`

获取时间戳

1
2
3
4
5
6
# 时间戳(秒) 输出:1652706914
seconds=`date '+%s'`
# 获取时间纳秒数
nanoseconds=`date '+%N'`
# 获取当前时间的纳秒级时间戳(不建议使用)
current_timestamp=$((`date '+%s'`*1000+`date '+%N'`/1000000))

获取某个时间的秒数

1
date -d "2022-05-16 00:00:00" +%s

将时间戳转换为时间

1
2
3
4
#Mon May 16 21:15:14 CST 2022
date -d @1652706914
# yyyy-MM-dd HH:mm:ss
date -d "1970-01-01 UTC 1652706914 seconds" "+%F %T"

format格式说明表如下

1
2
# 查看脚本
date --help
格式 说明
%% %的转义
%a 当地星期几的缩写,例如Sun、日
%A 当地星期几的全称,例如Sunday、星期二
%b 当地月份的缩写,例如Jan、12月
%B 当地月份的全称,例如January、十二月
%c 当地日期和时间,例如Thu Mar 3 23:05:25 2005,2018年12月18日 星期二 15时46分23秒
%C 输出世纪,例如现在是2
%d 当前月份的第几天,例如18(2018-12-18)
%D 日期,格式与%m%d%y,年为两位数,例如12/18/18
%e 当前月份的第几天,例如08(2018-12-08)
%F 完整格式的日期,与%Y-%m-%d相同,例如2018-12-18
%g 年份中的后两位数,例如18
%G
%h 与%b一样
%H 小时(00…23),即24小时制
%I 小时(01…12),即12小时制
%j 一年中的第几天(001…366)
%k 小时(1…23)
%l 小时(1…12)
%m 月份(01…12)
%M 分钟(01…59)
%n 新行
%N 纳秒(000000000…999999999)
%p 当地上午或下午,例如PM、下午
%P 当地上午或下午(小写),例如pm、下午
%q 第几季度(1…4)
%r 当地12小时制的时间格式,例如下午 04时06分24秒
%R 24小时制的时分(%H:%M),例如16:07
%s 从1970-01-01 00:00:00 UTC到现在的秒数
%S 当前分钟的秒数(00…59)
%T 等价%H:%M:%S,时分秒
%u 从星期一开始数,一周中的第几天(1…7)
%U 从星期日开始数,一年中的第几周(00…53)
%V ISO周数,从周一开始数(01…53)
%w 从周日开始数,一周中的第几天(0…6)
%W 从星期一开始数,一年中的第几周(00…53)
%x 当地日期,例如2018年12月18日
%X 当地时间,例如16时16分17秒
%y 年份的后两位数(00…99)
%Y 年份
%z 时区,+hhmm,例如东八区+0800
%? 时区,+hh::mm,例如东八区+08:00
%:? 时区,+hh::mm:ss,例如东八区+08:00:00
%Z 时区的缩写,例如东八区CST

本文地址: https://github.com/maxzhao-it/blog/post/805f48c5/