众所周知,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》第三版)第四章–时区陷阱

Python学习之datetime时间戳相关推荐

  1. Python time和datetime时间戳和时间字符串相互转换

    Python time和datetime时间戳和时间字符串相互转换 时间戳是指格林威治时间1970年01月01日00时00分00秒开始计算所经过的秒数,是一个浮点数. time和datetime都是P ...

  2. python time时间戳_time和datetime时间戳---python

    参考网址,写的很棒: http://www.open-open.com/lib/view/open1479363382807.html 个人封装好的函数,可以互相转换 class my_datetim ...

  3. Python学习之路—2018/6/20

    Python学习之路-2018/6/20 1.模板语法之变量 views.py def index(request):import datetimes="gyq"l=[1,2,3] ...

  4. python学习总结----时间模块 and 虚拟环境(了解)

    python学习总结----时间模块 and 虚拟环境(了解) time- sleep:休眠指定的秒数(可以是小数) - time:获取时间戳# 获取时间戳(从1970-01-01 00:00:00到 ...

  5. Python学习教程(Python学习路线):如何正确使用Pandas库提升项目的运行速度?...

    Python学习教程:如何正确使用Pandas库提升项目的运行速度? 如果你从事大数据工作,用Python的Pandas库时会发现很多惊喜.Pandas在数据科学和分析领域扮演越来越重要的角色,尤其是 ...

  6. 小猪的Python学习之旅 —— 1.基础知识储备

    小猪的Python学习之旅 -- 1.基础知识储备 引言: (文章比较长,建议看目录按需学习-) 以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#. 和PHP有句&q ...

  7. PYTHON学习笔记之(一)2020.08

    PYTHON学习笔记之(一)2020.08 Python基础 数据类型 常见的列表.字典,以及元组.集合. 1 列表 list 1.1 列表转换字符串 stu = ['王一', '李二', '张三'] ...

  8. 零基础学Python学习笔记

    Python学习笔记 代码下载地址 链接:https://pan.baidu.com/s/1yGnpfq4ZHeKpt4V0J_PTSg 提取码:hmzs 1. Python 基础语法 1.1 基本数 ...

  9. python两层循环 循环完整体一个_Python学习教程(Python学习路线):Python编写循环的两个建议...

    原标题:Python学习教程(Python学习路线):Python编写循环的两个建议 Python学习教程(Python学习路线):给大家总结了两个Python编写循环的建议 循环是一种常用的程序控制 ...

最新文章

  1. XILINX资源获取
  2. Java 字符串操作的总结1(转载)
  3. 如何将idea自带的maven添加到环境变量
  4. SQL转化为MapReduce的过程
  5. linux系统在硬盘上安装程序,怎么样用硬盘上的镜象文件来安装Linux系统?我都进入安装界面了,但是那个安装程序好像找不到那几个镜象文件,请指点...
  6. GCD异步加载网络图片
  7. 学习Web前端,前景无限光明?
  8. oracle压缩子分压,混合列压缩(HCC)在OLAP及OLTP场景中的测试
  9. java期末考试试卷及答案文库_《java语言程序设计》期末考试试题及答案(题库超级大全-应考必备)java考试题必从中出...
  10. 使用vue3.0仿cnode网站
  11. Arduino Uno + HMC5883L电子罗盘 实验
  12. Word文档里面如何给内容进行注释添加
  13. 手把手教你申请CSDN博客专家(2021新鲜出炉)
  14. 如何辨别3C标志的真伪!
  15. “讯飞杯”合肥市第三十届青少年信息学奥林匹克竞赛(小学组)试题
  16. StopWatch使用
  17. Chatbot-检索式模型介绍(三)
  18. 会计未来十年发展趋势_CFO眼中未来十年财务变化【值得收藏】
  19. 基于SSM的智慧问诊系统
  20. 【电力电子技术DC-AC】电流跟踪PWM控制三相逆变器的simulink仿真

热门文章

  1. python小波变换尺度函数_Python图像处理(17):pyWavelet
  2. 初中知识会不会影响计算机,初中计算机论文
  3. Sentinel+Nacos实现Sentinel的持久化规则,就很nice!
  4. CentOS 8安装JFrog Artifactory社区版解决方案
  5. Vue + ESLint——编译错误[‘xxx‘ is defined but never used]解决方案
  6. HTML——ASP的 Response.write 方法输出中文乱码解决方案
  7. OFFICE——Word与Excel交互处理——邮件合并
  8. [NOI2001]食物链
  9. tmux命令启动MySQL_tmux启动脚本
  10. php并发访问排队_PHP高并发处理方案