设为首页 收藏本站
查看: 932|回复: 0

[经验分享] Linux时间戳和标准时间的互转

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-6 08:42:37 | 显示全部楼层 |阅读模式
在LINUX系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数。如/etc/shadow里的密码更改日期和失效日期,还有代理服务器的访问日志对访问时间的记录等等。

下面介绍几种时间戳格式和标准时间格式转换的方法:
1、分别以标准格式和时间戳来显示当前时间
[iyunv@365linux ~]# date   
2010年 08月 10日 星期二 03:39:21 CST   
[iyunv@365linux ~]# date +%s12813827752、显示指定时间的时间戳
[iyunv@365linux ~]# date -d "2010-07-20 10:25:30" +%s   
1279592730



3、将时间戳转换为标准时间格式
方法1:使用date命令
[iyunv@365linux ~]# date -d "@1279592730" 2010年 07月 20日 星期二 10:25:30 CST[iyunv@365linux ~]# date -d "1970-01-01 utc 1279592730 seconds" 2010年 07月 20日 星期二 10:25:30 CST[iyunv@365linux ~]# date -d "1970-01-01 14781 days" "+%Y/%m/%d %H:%M:%S" 2010/06/21 00:00:00[iyunv@localhost tmp]#  date -d "@1279592730" Tue Jul 20 10:25:30 CST 2010 [iyunv@localhost tmp]#  date -d "@1279592730" +"%Y%m%d %H:%M:%S" 20100720 10:25:30 [iyunv@localhost tmp]#  date -d "@1279592730" +"%F %H:%M:%S"2010-07-20 10:25:30 [iyunv@localhost tmp]# date -d "1970-01-01 utc 1279592730 seconds"Tue Jul 20 10:25:30 CST 2010 [iyunv@localhost tmp]# date -d "1970-01-01 utc 1279592730 seconds" +"%F %H:%M:%S" 2010-07-20 10:25:30

方法2:使用awk里的时间函数
[iyunv@365linux ~]# echo "1279592730" |awk '{print strftime ("%F %T",$0)}' 2010-07-20 10:25:30
方法3:使用perl处理
[iyunv@365linux ~]# perl -e 'print localtime(1279592730)."\n";' Tue Jul 20 10:25:30 2010
补充:
关于时间格式的解释

UTC  (Universal Time Coordinated,UTC)世界协调时间
CST  (China Standard Time UTC+8:00)中国沿海时间(北京时间)
GMT  (Greenwich Mean Time)格林威治标准时间:

系统时区设置:
[iyunv@365linux ~]# vim /etc/sysconfig/clock ZONE="Asia/Shanghai" UTC=true ARC=false[iyunv@365linux ~]# cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime--------------------------------------------------------------------------------------------------------------------------------------------------------------------------oracle 中将unix/linux时间戳进行转换
unix/linux时间戳是按照从格林威治时间1970年1月1日期计算的一个秒数。

unix/linux时间戳转换为标准时间格式(主要是注意时区问题):
select TO_DATE('19700101','yyyymmdd') + 1235728935/86400 +TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24 from dual 其中1235728935就是unix/linux时间戳,转换完之后就表示为 2009-2-27 18:02:15。

反过来也一样,还是要考虑时区:
select (to_date('2009-2-27 18:02:15','yyyy-mm-dd hh24:mi:ss') - to_date('1970-1-1','yyyy-mm-dd'))*86400- TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))*3600 from dual


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-268247-1-1.html 上篇帖子: CentOS 7.x设置自定义开机启动,添加自定义系统服务 下篇帖子: CentOS 6.8 OpenLDAP实现SSO并对sudo权限管控 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表