博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux时间戳和标准时间的互转
阅读量:5111 次
发布时间:2019-06-13

本文共 2268 字,大约阅读时间需要 7 分钟。

 
 
在LINUX系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数。如/etc/shadow里的密码更改日期和失效日期,还有代理服务器的访问日志对访问时间的记录等等。
 
下面介绍几种时间戳格式和标准时间格式转换的方法:
1、分别以标准格式和时间戳来显示当前时间
[root@365linux ~]# date    
2010年 08月 10日 星期二 03:39:21 CST   
[root@365linux ~]# date +%s 
1281382775
2、显示指定时间的时间戳
[root@365linux ~]# date -d "2010-07-20 10:25:30" +%s    
1279592730
 
3、将时间戳转换为标准时间格式
方法1:使用date命令
[root@365linux ~]# date -d "@1279592730" 
 2010年 07月 20日 星期二 10:25:30 CST
[root@365linux ~]# date -d "1970-01-01 utc 1279592730 seconds" 
 2010年 07月 20日 星期二 10:25:30 CST
[root@365linux ~]# date -d "1970-01-01 14781 days" "+%Y/%m/%d %H:%M:%S" 
 2010/06/21 00:00:00
[root@localhost tmp]#  date -d "@1279592730" 
 Tue Jul 20 10:25:30 CST 2010
 [root@localhost tmp]#  date -d "@1279592730" +"%Y%m%d %H:%M:%S"
 20100720 10:25:30
 [root@localhost tmp]#  date -d "@1279592730" +"%F %H:%M:%S" 
2010-07-20 10:25:30
 [root@localhost tmp]# date -d "1970-01-01 utc 1279592730 seconds"  
Tue Jul 20 10:25:30 CST 2010
 [root@localhost tmp]# date -d "1970-01-01 utc 1279592730 seconds" +"%F %H:%M:%S" 2010-07-20 10:25:30
 
 
方法2:使用awk里的时间函数
[root@365linux ~]# echo "1279592730" |awk '{print strftime ("%F %T",$0)}' 
 2010-07-20 10:25:30
 
方法3:使用perl处理
[root@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)格林威治标准时间:
 
系统时区设置:
[root@365linux ~]# vim /etc/sysconfig/clock ZONE="Asia/Shanghai" 
 UTC=true
 ARC=false
[root@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
 
 

转载于:https://www.cnblogs.com/yun007/p/3809231.html

你可能感兴趣的文章
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
jQuery Mobile笔记
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
查询数据(后台到前台传递数据,显示数据)
查看>>
集群tomcat+apache配置文档
查看>>
VMware Tools安装
查看>>
2019.04.09 电商20 购物车的展示
查看>>
Linux上架设boost的安装及配置过程
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
zoj 2286 Sum of Divisors
查看>>
OO5~7次作业总结
查看>>
如何判断主机是大端还是小端(字节序)
查看>>
Centos7 日志查看工具
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
BZOJ2459 : [BeiJing2011]神秘好人
查看>>
Django入门示例之被解放的姜戈——01 初试天涯(安装及启动)
查看>>
OpenCV之响应鼠标(三):响应鼠标信息
查看>>