datetime是Python处理日期和时间的标准库。

获取当前日期和时间

我们先看如何获取当前日期和时间:

>>> from datetime import datetime
>>> now = datetime.now() # 获取当前datetime
>>> print(now)
2015-05-18 16:28:07.198690
>>> print(type(now))
<class 'datetime.datetime'>

注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。

如果仅导入import datetime,则必须引用全名datetime.datetime

datetime.now()返回当前日期和时间,其类型是datetime

获取指定日期和时间

要指定某个日期和时间,我们直接用参数构造一个datetime

>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
>>> print(dt)
2015-04-19 12:20:00

datetime转换为timestamp

在计算机中,时间实际上是用数字表示的。我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp。

把一个datetime类型转换为timestamp只需要简单调用timestamp()方法:

>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
>>> dt.timestamp() # 把datetime转换为timestamp
1429417200.0

注意Python的timestamp是一个浮点数。如果有小数位,小数位表示毫秒数。

某些编程语言(如Java和JavaScript)的timestamp使用整数表示毫秒数,这种情况下只需要把timestamp除以1000就得到Python的浮点表示方法。

timestamp转换为datetime

要把timestamp转换为datetime,使用datetime提供的fromtimestamp()方法:

>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t))
2015-04-19 12:20:00

注意到timestamp是一个浮点数,它没有时区的概念,而datetime是有时区的。上述转换是在timestamp和本地时间做转换。

本地时间是指当前操作系统设定的时区。

str转换为datetime

很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:

>>> from datetime import datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)
2015-06-01 18:19:59

字符串'%Y-%m-%d %H:%M:%S'规定了日期和时间部分的格式。详细的说明请参考Python文档。

注意转换后的datetime是没有时区信息的。

datetime转换为str

如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28

datetime加减

对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+-运算符,不过需要导入timedelta这个类:

>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
>>> now + timedelta(hours=10)
datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
>>> now - timedelta(days=1)
datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
>>> now + timedelta(days=2, hours=12)
datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)

可见,使用timedelta你可以很容易地算出前几天和后几天的时刻。

小结

datetime表示的时间需要时区信息才能确定一个特定的时间,否则只能视为本地时间。

如果要存储datetime,最佳方法是将其转换为timestamp再存储,因为timestamp的值与时区完全无关。

转载自https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431937554888869fb52b812243dda6103214cd61d0c2000

python datetime相关推荐

  1. python datetime datetime_Python datetime.tzinfo方法代碼示例

    本文整理匯總了Python中datetime.datetime.tzinfo方法的典型用法代碼示例.如果您正苦於以下問題:Python datetime.tzinfo方法的具體用法?Python da ...

  2. Python datetime isocalendar()方法与示例

    Python datetime.isocalendar()方法 (Python datetime.isocalendar() Method) datetime.isocalendar() method ...

  3. Python datetime __str __()方法与示例

    Python datetime .__ str __()方法 (Python datetime.__str__() Method) datetime.__str__() method is used ...

  4. Python datetime astimezone()方法与示例

    Python datetime.astimezone()方法 (Python datetime.astimezone() Method) datetime.astimezone() method is ...

  5. python datetime库_python datetime库使用代码详解

    python 如何将字符串转化为datetime.date心总是在最痛时,复苏:爱总是在最深时,落下帷幕. 比较省事的办法是用time模块的strptime方法来解析日期字符串成为时间对象,然后再把年 ...

  6. python datetime strptime_python datetime模块strptime/strptime format常见格式命令_施罗德_新浪博客...

    python datetime模块strptime/strptime format常见格式命令 (2013-02-21 11:04:05) 转载▼ 标签: datetime it 分类: python ...

  7. python 日期格式月份不加前导,Python datetime时间格式化去掉前导0

    Python datetime时间格式化去掉前导0 Python时间格式化的时候,去掉前导0的: dt = datetime.now() print dt.strftime('%-H') #结果是: ...

  8. python datetime 时区_Python datetime 如何处理时区信息

    在 Python 常用日期处理 -- 内置模块 datetime 探讨了 Python 如何使用 datetime, 如果是一个跨时区的应用(Web 应用都是),就不能只存储一个时间而不带时区,如此, ...

  9. python datetime 格式化_[已解决]Python中用strftime格式化datetime出错

    折腾: [已解决]Flask中的templates的html中格式化datetime 期间,用代码:@app.template_filter('datetime_format') def_jinja2 ...

  10. 带有示例的Python datetime weekday()方法

    Python datetime.weekday()方法 (Python datetime.weekday() Method) datetime.weekday() method is used to ...

最新文章

  1. 怎么检测不到我的音频_检测不到硬盘怎么办?
  2. 1021 Deepest Root (25 分) 【难度: 中 / 知识点: 树的直径 连通块】
  3. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
  4. python对windows进行操作_【转】python 操作windows下的目录
  5. 前端文件表单/ajax上传实例代码
  6. 在微型计算机中 如果电源突然中断,微型计算机在工作中电源突然中断,则其中的信息全部丢失,再次通电后也不能恢复的..._考试资料网...
  7. Java里optionsMenu.add_android创建optionsmenu的方法
  8. 查找——顺序、二分法、斐波那契、插值、分块
  9. networkxpdf_1 NetworkX概述
  10. php把amr转换成mp3,php 微信amr转mp3的方法
  11. 数据可视化的基本流程
  12. 全球最好听、最值得听的100首英文歌曲。(每首都有下载地址)
  13. 桌面新建文件夹不显示缩图_如何在Windows 10桌面上创建不可见的文件夹
  14. 周末imac机重装win7,装得我抓狂
  15. 初探 Ettercap: ARP投毒 DNS欺骗
  16. 使用ffmpeg用图片批量合成抖音卡点短视频
  17. 论文框架和目录一样吗_看黑板,划重点!速来get论文写作10技巧
  18. A/B-test显著性检验
  19. log4j.proprties
  20. google paly 应用推广 发送渠道广播

热门文章

  1. MongoDB出错:ERROR: child process failed, exited with error number 1 To see additional infor
  2. hadoop 单机单间_Hadoop单机模式配置
  3. oracle server process,Oracle体系结构及备份(四)server-process
  4. mysql open table_MySQL open table
  5. 计算机组成原理上机实验报告.doc,计算机组成原理第二次上机实验报告.doc
  6. 计算机学业水平考试答题卡,高一年级期末信息技术考试(含答题卡)
  7. java new对象 =null_在Java中将对象分配为null会影响垃圾回收吗?
  8. JDBC——实现通用的查询
  9. cadence设计运算放大器_21.比较器的原理与特性,它与运算放大器的本质区别总结归纳...
  10. asr语音转写_搜狗智能录音笔C1正式上市 语音转文字准确率达95%