Python utc转化时间
来源:互联网 发布:软件设计师怎么备考 编辑:程序博客网 时间:2024/05/17 22:52
最近在开发项目的时候, 遇到了时区, 本地时间和UTC糅杂的情况, 研究之后做一些分享.
UTC Universal Time Coordinated 又叫协调世界时, UTC用数值记录了时间. 时间记录的是0时区从1972年开始共计走过了多少秒. 所以本地时间与UTC时间的转换需要考虑时差.
一般说来, UTC时间的计算不外乎三种情况.
1: UTC <-----> UTC
2: UTC -----> LocalTime
3: LocalTime ------> UTC
第一种情况,处理比较简单, 差值就表示两个时间相差的秒数.
比如 utc1 = 1406869066, utc2 = 1406869070 相差4, 也就是这两个时间相差4秒.
==========
第二种情况, 可以利用编程语言中自带的包函数, 比如python的gmtime.
time = '1407391625' print gmtime(float(time))
输出:
time.struct_time(
tm_year=2014,
tm_mon=8,
tm_mday=7,
tm_hour=6,
tm_min=7,
tm_sec=5,
tm_wday=3,
tm_yday=219,
tm_isdst=0
)
这样就把日期转换成方便识别的时期, 但注意, 这个日期是0时区的时刻, localtime还需要加减时区, 比如北京在东八区,那么时差为8小时, 所以此处的小时应该是14点, 而不是6点.
===========
第三种情况
需要特别注意, 因为不同的函数,处理的结果也是不相同的。
<span style="font-size:18px;">import calendarimport timeimport datetimed = datetime.datetime(2010, 10, 10)calendar.timegm(d.timetuple())1286668800time.mktime(d.timetuple())1286640000.0 </span>因为calendar.timegm默认这里的2010-10-10 00:00:00是0时区的时刻,而time.mktime则认为这个是你系统的时间,所以会自动处理时差!比如北京时间东八区,这里time.mktime会认为0时区时间是2010-10-09 16:00:00.
所以在使用函数时候,要明白自己用来计算的时间到底是哪个时区的。以下以time.mktime来讨论
localTime ± 时差 = UTC时间.
<span style="font-size:18px;"> time = '2014-08-07-01-00-00' format_time = strptime(time, "%Y-%m-%d-%H-%M-%S") # 将字符串时间转为标准格式时间 utc_time = mktime(format_time) print utc_time</span>输出:
1407391407.0
****
需要注意的是, mktime会自动获取本机时区, 而帮我计算时差. 所以本地时间转换为utc很方便, 但如果出现了这种情况: 你在东八区, 需要处理来自西五区的一个日志文件(楼主所遇到的情况) 那么就需要手动为这个时差做处理, 否则机器会自动以本地时差处理. 那么就产生了13小时的误差. 所以以上代码改为:
<span style="font-size:18px;"> time = '2014-08-07-01-03-27' format_time = strptime(time, "%Y-%m-%d-%H-%M-%S") utc_time = mktime(format_time) + 3600*13 # 处理时差 print utc_time</span>
参考资料: 戳这里
完- Python utc转化时间
- Python将UTC时间转化为Local时间
- python 获取utc时间转化为本地时间
- utc 和本地时间的转化
- javascript 时间 utc 格式转化函数
- Python的UTC时间转换
- 怎样把系统时间转化为UTC时间?
- python utc gmt 时间 格式转换
- Android 怎么把GMT+8.0转化为UTC时间
- 日期是NaN 转化成UTC格式时间
- UTC时间
- utc时间
- JavaScript如何将unix时间戳转化为UTC时间并格式化显示
- filetimetosystemtime函数将filetime转化systemtime后所得的时间依旧是一种UTC时间
- UTC时间&本地时间
- python Timestamp、Datetime、UTC时间之间转换练习
- ISO 8601日期扩展格式 与UTC 时间类型的相互转化
- java中把UTC时间戳(System.currentTimeMillis())转化为代表日期的整数
- 备份我的文件列表
- HeidiSQL工具导出导入MySQL数据
- android onTouchEvent和setOnTouchListener中onTouch的区别
- Sql Server 2008远程过程调用失败
- 如何查看安卓(Android) Wifi密码与ssid
- Python utc转化时间
- metaploit安装错误is the server running locally and accepting TCP IP on port 7337
- JgGrid 使用学习
- 腾讯微信技术总监周颢:一亿用户增长背后的架构秘密
- 今天用了下QMessageBox,发现一闪而过这是为啥?
- vncviewer: unable to open display ""
- 用Hadoop构建电影推荐系统
- windows上运行npm Error: ENOENT, stat 'C:\Users\
- Eclipse导出jar和源码并保证无中文乱码