Python学习之datetime时间戳

原创 2018年04月17日 16:45:04

众所周知,Python提供的用于处理日期和时间的标准模块名为datetime.
记录当前时间戳的常用方法为

>>> import datetime
>>> datetime.datetime.utcnow()
datetime.datetime(2018, 4, 17, 8, 4, 14, 924480)
>>> datetime.datetime.now()
datetime.datetime(2018, 4, 17, 16, 4, 46, 821245)

可以看出两种方法得到的时间戳是不一样的,那么两者有什么不同呢?
python手册中是这样写的:

classmethod datetime.now(tz=None)
Return the current local date and time. If optional argument tz is None or not specified, this is like today(), but, if possible, supplies more precision than can be gotten from going through a time.time() timestamp (for example, this may be possible on platforms supplying the C gettimeofday() function).
If tz is not None, it must be an instance of a tzinfo subclass, and the current date and time are converted to tz’s time zone. In this case the result is equivalent to tz.fromutc(datetime.utcnow().replace(tzinfo=tz)). See also today(), utcnow().

classmethod datetime.utcnow()
Return the current UTC date and time, with tzinfo None. This is like now(), but returns the current UTC date and time, as a naive datetime object. An aware current UTC datetime can be obtained by calling datetime.now(timezone.utc). See also now().

翻译过来就是now()返回的是当前时区的时间,这个时间就是你电脑的右下角显示时间(只要你没有调过时区)。而utcnow()返回的是世界标准时间(UTC),这个时间不分时区。

了解到这些我们也就能够满足基本需求了。接下来的是进阶需求。
当我们的业务拓展至全球,now()返回的是当地时间,这个时间与时区相关,但是却不返回时区。而utcnow()返回的是世界时间,这个时间与时区无关。它们之间的换算为:

世界时间=当地时间+(或者-)时区

当我们接收到某个时区发送过来的时间时,我们并不知道它是哪个时区的所以我们需要能够返回包含时区信息的时间戳。我们可以用ISO8601库。
测试代码如下:

>>> import datetime
>>> import iso8601
>>> import pytz
>>> def utcnow():
...    return datetime.datetime.now(tz=pytz.utc)
...
>>> utcnow()
datetime.datetime(2018, 4, 17, 8, 7, 41, 300399, tzinfo=<UTC>)
>>> iso8601.parse_date(utcnow().isoformat())
datetime.datetime(2018, 4, 17, 8, 10, 32, 70631, tzinfo=datetime.timezone(datetime.timedelta(0), '+00:00'))

这时就可以比较来自不同时区的时间戳了。

参考资料:《Python高手之路》(《The Hacker’s Guide to Python》第三版)第四章–时区陷阱

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33363973/article/details/79977129

python datetime 与时间戳相互转换

python datetime 与时间戳相互转换首先需要引入的时间相关模块:import time, datetime from datetime import date, datetime, tim...
  • cheungmine
  • cheungmine
  • 2017-02-21 16:03:05
  • 3732

Python字符串、时间戳、datetime时间相关转换

总结的时间转换函数# datetime时间转为字符串 def Changestr(datetime1): str1 = datetime1.strftime('%Y-%m-%d %H:%M:%...
  • Data_Ada
  • Data_Ada
  • 2017-06-07 15:12:19
  • 2830

python的datetime和unix时间戳之间相互转换

python的datetime和unix时间戳之间相互转换 将python的datetime转换为unix时间戳 import time import datetime dtime = da...
  • u012422446
  • u012422446
  • 2016-09-23 15:51:08
  • 14266

python datetime模块相关 mysql 时间戳等

原文在此 所有日期,时间的API都在datetime模块内。1.日期输出格式化strftime()函数将datetime结构格式化为一个字符串 datetime =>string now = dat...
  • power0405hf
  • power0405hf
  • 2015-09-19 12:14:26
  • 3723

python datetime对象转时间戳

import datetime,threadinglockObject = threading.Lock()def testTime():    global lockObject    '''这个地...
  • longzhiwen888
  • longzhiwen888
  • 2015-06-19 16:18:58
  • 1199

python转换时间戳和日期时间格式的转换

[steven@txzxp2 seccenter]$ python Python 2.7.5 (default, Jul  8 2013, 09:48:59)  [GCC 4.8.1 201306...
  • defeattroy
  • defeattroy
  • 2013-09-06 15:00:18
  • 6980

python3 datetime 获取指定日期的时间戳

获得日期 Feb 28, 2018 03:55:12 PM 的时间戳:import datetime ctime = datetime.datetime.strptime('Feb 28, 2018 ...
  • uvyoaa
  • uvyoaa
  • 2018-03-07 17:48:13
  • 124

Python中实现对Timestamp和Datetime及UTC时间之间的转换

http://www.jb51.net/article/63654.htm  Python项目中很多时候会需要将时间在Datetime格式和TimeStamp格式之间转化,又或者你需要将...
  • scdxmoe
  • scdxmoe
  • 2015-10-20 10:52:20
  • 1912

python 时间戳和格式化时间的转化

python 里面与时间有关的模块主要是 time 和 datetime 如果想获取系统当前时间戳:time.time() ,是一个float型的数据 获取系统当前的时间信息 : time.ctime...
  • huiseguiji1
  • huiseguiji1
  • 2014-12-06 11:46:05
  • 3445

Python时间戳的使用和相互转换

1.将字符串的时间转换为时间戳     方法:        import time a = "2013-10-10 23:40:00" # 将其转换为时间数组 timeArray = time....
  • Sky_qing
  • Sky_qing
  • 2015-08-04 10:48:29
  • 13323
收藏助手
不良信息举报
您举报文章:Python学习之datetime时间戳
举报原因:
原因补充:

(最多只允许输入30个字)