python中通过datetime获取UTC时间ISO格式
一个热点统计需求,需要限定一个时间范围,计算出该范围内的热点事件,相关数据则以UTC标准时间的ISO时间格式存在mongodb中,和服务器设置的时区UTC+8并不一致。
为了解决这个问题,直觉反应是在python中将时区改为UTC时区,然而改变整个服务的时区设置却可能会影响其他逻辑,此种更改最好是能限定在热点逻辑的这个范围内。
也可以在使用datetime类的时候指定时区信息,这样也可以获得UTC时间,如下为默认时区和指定UTC的输出结果,差了8个小时(北京时间UTC+8)
>>> datetime.datetime.now()
datetime.datetime(2017, 9, 18, 0, 28, 50, 666364)
>>> utc_tz = pytz.timezone('UTC')
>>> datetime.datetime.now(tz=utc_tz)
datetime.datetime(2017, 9, 17, 16, 28, 54, 535585, tzinfo=<UTC>)
要获取ISO格式的时间则可以调用datetime类中的isoformat函数:
>>> datetime.datetime.now().isoformat()
'2017-09-18T00:30:50.587223'
>>> datetime.datetime.now(tz=utc_tz).isoformat()
'2017-09-17T16:30:58.410670+00:00'
这样也可以实现生成UTC时间的ISO格式功能,但是略显麻烦,help(datetime.datetime)查看发现已经有定义好的utc相关函数可以用了,utcnow函数就可以获得当前的utc标准时间:
>>> datetime.datetime.utcnow()
datetime.datetime(2017, 9, 17, 16, 40, 18, 683716)
>>> datetime.datetime.utcnow().isoformat()
'2017-09-17T16:41:06.418447'
要限定时间范围,则可以通过datetime.timedelta类获得一个按天、秒或毫秒计数的时间区间,然后和当前时间相减即可得出起始时间了,例如起始时间为当前时间往前10天10秒0毫秒:
>>> td = datetime.timedelta(days=10,seconds=10,microseconds=0)
>>> td
datetime.timedelta(10, 10)
>>> datetime.datetime.utcnow().isoformat()
'2017-09-17T16:52:04.020059'
>>> (datetime.datetime.utcnow() - td).isoformat()
'2017-09-07T16:51:54.525088'
python中通过datetime获取UTC时间ISO格式的更多相关文章
- Python中如何把一个UTC时间转换为本地时间
需求: 将20141126010101格式UTC时间转换为本地时间. 在网上搜了好长时间都没有找到完美的解决方案.有的引用了第三方库,这就需要在现网安装第三方的软件.这个是万万不可的.因为真实环境不一 ...
- C# 获取utc时间,以及utc datetime 互相转化
C# 获取utc时间,以及utc datetime 互相转化 大部分源于http://blog.sina.com.cn/s/blog_4c6e822d0102dsdz.html 刚开始学习一点C# ...
- 2019-03-15 Python time datetime 获取当下时间 和 格式化时间
import datetime start_date='2018-01-10' end_date='2019-01-10'# 转换为2018-01-10 00:00:00start_date=date ...
- UTCformat 转换UTC时间并格式化成本地时间
/** * UTCformat 转换UTC时间并格式化成本地时间 * @param {string} utc */ UTCformat (utc) { var date = new Date(utc) ...
- js获取当前时间,格式YYYY-MM-DD
//获取当前时间,格式YYYY-MM-DD function getNowFormatDate() { var date = new Date(); var seperator1 = "-& ...
- Python datetime获取详细时间
说明:datetime是date和time的结合体,包含了date和time的所有信息 datetime常见用法: 1.datetime.datetime.now()返回一个UTC时间的datetim ...
- Python 将一个已知的 utc时间字符串 转换为东八区时间
先获取一个utc格式的时间 utc_time = datetime.datetime.utcnow() print(utc_time) 输出 2018-06-24T08:59:39Z 这里我们假设目前 ...
- python 将带有TZ的UTC时间字符串,转换成本地时间
整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信中,为统一而普遍使用一个标准时间,称为通用协调时(UTC, Universal Time Coordinated).UTC与格林尼治 ...
- python中多重继承与获取对象
1.python中多重继承 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承. 多重继承的继承链就不是一棵树了,它像这样: class A(object): def __init__ ...
随机推荐
- ZT 设计模式六大原则(6):开闭原则
ZT 设计模式六大原则(6):开闭原则 分类: 设计模式 2012-02-27 08:48 24870人阅读 评论(72) 收藏 举报 设计模式扩展框架编程测试 定义:一个软件实体如类.模块和函数应该 ...
- Graph 133. Clone Graph in three ways(bfs, dfs, bfs(recursive))
Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...
- 当当网-前端project师測试题
前端project师測试题(笔试时间20分钟.面试时间20分钟) 一.笔试 1.基础问题 (1)前端页面有哪三层构成,各自是什么? ...
- 2018 Multi-University Training Contest 4 Problem K. Expression in Memories 【模拟】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6342 Problem K. Expression in Memories Time Limit: 200 ...
- 第六章.MyBatis缓存结构
一级缓存 测试案例: MyBatisTest.java //缓存 @Test public void testFindCustomerCache1() throws Exception{ SqlSes ...
- Linux 进程与信号的概念和操作 linux process and signals
进程 主要参考: http://www.bogotobogo.com/Linux/linux_process_and_signals.php 译者:李秋豪 信号与进程几乎控制了操作系统的每个任务. 在 ...
- mime中间件
mime中间件Demo,里面用到的有 1.path模块 //引入模块 var path=require('path'); 2.extname方法 //获取文件的扩展名 var extname=path ...
- Knowledge Point 20180303 对比编译器、解释器与Javac编译原理
编译器与Javac编译原理 在前文我们知道了Java是一种编译语言和解释语言,它的源代码经过编译器Javac编译为能够被JVM识别的二进制语言,然后JVM将其解释为能够被平台识别的机器语言.那么什么是 ...
- AFNetworking 打印错误信息(二进制信息)
AFNetworking 打印错误信息(二进制信息) NSError *underError = error.userInfo[@"NSUnderlyingError"]; NSD ...
- MySQL学习之流程结构
流程结构 流程结构:代码的执行顺序. if分支 根据要求选择合适的执行部分. 基本语法 if在MySQL中有两种基本用法 1.用在select查询当中,当作一种条件来进行判断. 基本语法:if(条件, ...