datetime时区转换
http://www.dannysite.com/blog/122/
Python标准库中的datetime模块提供了各种对日期和时间的处理方法。从本文的主题着手,首先利用datetime中提供的utcnow()方法获取到当前UTC时间:
1
2
3
4
|
>>> import datetime >>> utc_now = datetime.datetime.utcnow() >>> utc_now datetime.datetime( 2013 , 12 , 4 , 15 , 43 , 21 , 872000 ) |
而此时其tzinfo为none:
1
2
|
>>> utc_now.tzinfo >>> |
当涉及国际时区时,时区转换则会经常使用到,比如来尝试将刚才的UTC时间转换为本地时间。对于Python3.3+版本,可以这么做:
1
2
|
>>> utc_now.replace(tzinfo = datetime.timezone.utc).astimezone(tz = None ) datetime.datetime( 2013 , 12 , 4 , 23 , 43 , 21 , 872000 , tzinfo = datetime.timezone(datetime.timedelta( 0 , 28800 ), '中国标准时间' )) |
不过该方法貌似并不方便,特别是在转换其他时区的时候。而对于更低版本的Python,则datetime.timezone可能压根就还没有。因此更便捷的方法是借助第三方包来实现 —— pyzt,下面就借助于它来实现时区转换:
1
2
3
4
5
6
7
8
|
>>> from pytz import timezone >>> utc_now.tzinfo >>> tzchina = timezone( 'Asia/Chongqing' ) >>> tzchina <DstTzInfo 'Asia/Chongqing' LMT + 7 : 06 : 00 STD> >>> utc = timezone( 'UTC' ) >>> utc_now.replace(tzinfo = utc).astimezone(tzchina) datetime.datetime( 2013 , 12 , 4 , 23 , 43 , 21 , 872000 , tzinfo = <DstTzInfo 'Asia/Chongqing' CST + 8 : 00 : 00 STD>) |
要转换为其他时区,则以此类推。
对于我自己来说,时区的转换主要出现在Django中,会经常需要将UTC时间转换为本地时间,而Django本身也已经为我们考虑到了这一点,因此实际操作起来更为方便:
1
2
3
4
5
|
>>> from django.utils.timezone import utc >>> from django.utils.timezone import localtime >>> now = datetime.datetime.utcnow().replace(tzinfo = utc) >>> localtime(now) datetime.datetime( 2013 , 12 , 5 , 0 , 3 , 13 , 122000 , tzinfo = <DstTzInfo 'Asia/Shanghai' CST + 8 : 00 : 00 STD>) |
在Python中转换时区的方法还有很多,通过探索也许还能找到更好的方法。
datetime时区转换的更多相关文章
- Python3中datetime时区转换介绍与踩坑
最近的项目需要根据用户所属时区制定一些特定策略,学习.应用了若干python3的时区转换相关知识,这里整理一部分记录下来. 下面涉及的几个概念及知识点: GMT时间:Greenwich Mean Ti ...
- python datetime时区转换
from pytz import timezone def datetime_as_timezone(date_time, time_zone): tz = timezone(time_zone) u ...
- C#中UnixTime和DateTime的转换(转载)
由于在API请求中返回回来的时间格式为UNIX形式,需要转换成正常的显示方式,在网上找到了这么一个例子. 使用是在C#中使用的,所以WP8开发应该也可以. 转载源地址:http://blog.linu ...
- python 27 获取时区转换后的时间
python3的datetime有timezone属性,这里介绍python2.7环境下,获取时区转换后的时间. 利用第三方插件,pytz,没有安装的话安装一下. #!/usr/bin/env pyt ...
- Clickhouse 时区转换
Clickhouse 时区转换 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS). OLAP场景的关键特征 大多数是读请求 数据总是以相当大的批(> 1000 ...
- SQL Server全时区转换
SQL Server全时区转换 假如你的应用程序是跨国(例如跨国银行交易)使用的话,那么数据库的一些国际化特性支持可以说是非常重要 其中最常见的就是各国时区上的差异,由于SQL Server getd ...
- Java 时区转换(UTC+8 到 UTC 等等)
前言:需要做时区转换,知道北京为UTC+8,东京为UTC+9,世界标准时间为UTC,所以下面的代码是只需要知道时区是+8还是+9还是0就可以了,不需要使用"CTT". " ...
- java中的时区转换
目录 java中的时区转换 一.时区的说明 二.时间的表示 三.时间戳 四.Date类和时间戳 五.java中的时区转换 java中的时区转换 一.时区的说明 地球表面按经线从东到西,被划成一个个区域 ...
- C# DATETIME格式转换汇总 根据日期获取星期
原文:C# DATETIME格式转换汇总 根据日期获取星期 C# DateTime.Now.Year --2019(年) DateTime.Now.Month --9(月) DateTime.Now. ...
随机推荐
- The repository for high quality TypeScript type definitions
Best practices This is a guide to the best practices to follow when creating typing files. There are ...
- js 动态 activex 组件
function writeObject(){ var obj = document.getElementById("mydelphi"); if(!obj){ var divob ...
- SVN server环境搭建
VisualSVN server搭建: 1. 下载VisualSVN server for Windows安装包:https://www.visualsvn.com/ 2. 安装过程,基本就是下一步一 ...
- 简单实现JS Loading功能
我们经常在浏览网页的时候会看到数据在加载时,出现的LOADING提示.其实这个功能原理是很简单的,就是一个DIV遮盖当前页面,然后Loading就在遮盖DIV层上展示出来,现在我们来动手实现一下. 1 ...
- Jfinal中定时器的初步探索(一)
1.添加包引用:/jfinal_demo/WebContent/WEB-INF/lib/quartz-all-1.6.1.jar 注意版本号,这个版本是现在项目中使用的,已经有更高版本了,但这版比较稳 ...
- Android Studio 单元测试
测试的种类 按岗位划分 黑盒测试:测试逻辑业务 白盒测试:测试逻辑方法 按测试粒度分 方法测试:function test 单元测试:unit test 集成测试:integration test 系 ...
- Redis Cluster 在PHP上的实践
版本:redis3.0.3 redis——slot: 'master' => [ '192.168.1.55:7000'=>[0,5460], '192.168.1.55:7001'=&g ...
- Presto架构及原理
Presto 是 Facebook 推出的一个基于Java开发的大数据分布式 SQL 查询引擎,可对从数 G 到数 P 的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别,据称该引擎的性能是 ...
- 获取在线人数 CNZZ 和 51.la
string Cookies = string.Empty; /// <summary> /// 获取在线人数 (51.la统计器) /// </summary> /// &l ...
- 【XML配置文件读取】使用jdom读取XML配置文件信息
在项目中我们经常需要将配置信息写在配置文件中,而XML配置文件是常用的格式. 下面将介绍如何通过jdom来读取xml配置文件信息. 配置文件信息 <?xml version="1.0& ...