Linux时间戳和标准时间的互转
在LINUX系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数。如/etc/shadow里的密码更改日期和失效日期,还有代理服务器的访问日志对访问时间的记录等等。
1、分别以标准格式和时间戳来显示当前时间
[root@localhost ~]# date
Tue Mar 23 14:19:56 CST 2021
[root@localhost ~]# date +%s
1616480432
2、显示指定时间的时间戳
[root@localhost ~]# date -d "2021-01-01 11:11:11" +%s
1609470671
3、将时间戳转换为标准时间格式
方法1:使用date命令
[root@localhost ~]# date -d "@1609470671"
Fri Jan 1 11:11:11 CST 2021
[root@localhost ~]# date -d "1970-01-01 utc 1609470671 seconds"
Fri Jan 1 11:11:11 CST 2021
[root@localhost ~]# date -d "1970-01-01 18628 days" "+%Y/%m/%d %H:%M:%S"
2021/01/01 00:00:00
[root@localhost ~]# date -d "@1609470671"
Fri Jan 1 11:11:11 CST 2021
[root@localhost ~]# date -d "@1609470671" +"%Y%m%d %H:%M:%S"
20210101 11:11:11
[root@localhost ~]# date -d "@1609470671" +"%F %H:%M:%S"
2021-01-01 11:11:11
[root@localhost ~]# date -d "1970-01-01 utc 1609470671 seconds"
Fri Jan 1 11:11:11 CST 2021
[root@localhost ~]# date -d "1970-01-01 utc 1609470671 seconds" +"%F %H:%M:%S"
2021-01-01 11:11:11
方法2:使用awk里的时间函数
[root@localhost ~]# echo "1609470671" | awk '{print strftime("%F %T",$0)}'
2021-01-01 11:11:11
方法3:使用perl处理
[root@localhost ~]# perl -e 'print localtime(1609470671)."\n";'
Fri Jan 1 11:11:11 2021
补充:
关于时间格式的解释
UTC (Universal Time Coordinated,UTC)世界协调时间
CST (China Standard Time UTC+8:00)中国沿海时间(北京时间)
GMT (Greenwich Mean Time)格林威治标准时间