Python 日期和时间戳的转换

1. Python中处理时间的模块

Python中处理时间的模块有time、datetime和calendar。

在Python中表示时间的方式:

  • 时间戳:10位整数位和若干小数位,例如 1551153156.6358607
  • 元组(struct_time):  含有9个元素的元组,例如 (tm_year=2011, tm_mon=9, tm_mday=28, tm_hour=10, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=271, tm_isdst=-1)
  • 格式化字符串: 格式化的时间字符串, 例如 '2019-02-26 12:45:46'

time模块,以元组(struct_time)为核心实现时间戳和格式化时间字符串的相互转换。

datetime模块,以datetime类实例对象为核心实现时间戳和格式化时间字符串的相互转换。

2. Python的time模块

time模块是通过调用C库实现的,所以在有些平台上无法使用。大部分接口和C标准库的time.h一致。

使用time模块来进行格式化时间字符串和时间戳的相互转换。

2.1 将时间戳转换为格式化字符串

使用time模块获取当前时间的时间戳:   

>>> import time
>>> time.time()
1551157481.034565

将时间戳转换为元组(struct_time):

>>> time.localtime(time.time())
time.struct_time(tm_year=2019, tm_mon=2, tm_mday=26, tm_hour=13, tm_min=2, tm_sec=1, tm_wday=1, tm_yday=57, tm_isdst=0)

将元组(struct_time)转换为格式化时间字符串:

>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'2019-02-26 13:04:41'

2.2 将格式化字符串转换为时间戳

将格式化时间字符串'2019-02-26 13:04:41'转换为时间戳。

将格式化时间字符串转换为元组(struct_time):

>>> str_time = '2019-02-26 13:04:41'
>>> time.strptime(str_time, '%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2019, tm_mon=2, tm_mday=26, tm_hour=13, tm_min=4, tm_sec=41, tm_wday=1, tm_yday=57, tm_isdst=-1)

将元组(struct_time)转换为时间戳:

>>> time.mktime(time.strptime(str_time, '%Y-%m-%d %H:%M:%S'))
1551157481.0

2.3 使用time模块获取当前日期和时间

使用time模块获取当前日期(使用当前时间的struct_time作为缺省参数):

>>> time.strftime('%Y-%m-%d')
'2019-02-26'

使用time模块获取当前时间(使用当前时间的struct_time作为缺省参数):

>>> time.strftime('%H:%M:%S')
'13:21:13'

3. Python 的datetime模块

和time模块相比,datetime模块提供更直接易用的接口,功能也更加强大。

datetime模块提供了处理日期和时间的类,既有简单的方式,也有复杂的方式。它虽然支持日期和时间算法,但其实现是重点是输出的格式化操作和更加有效的属性提取功能。

3.1 datetime模块中定义的类

datetime模块中定义的类(这些类的对象都是不可变的):

  • datetime.date: 表示日期,常用的属性有year、month和day
  • datetime.time: 表示时间,常用的属性有hour、minute、second和microsecond
  • datetime.datetime: 表示日期时间
  • datetime.timedelta: 表示两个date、time和datetime实例之间的时间间隔,最小单位可达微秒
  • datetime.tzinfo: 时区相关对象的抽象基类,由time和datetime类使用
  • datetime.timezone: Python3.2中新增的功能,实现tzinfo抽象基类的类,表示与UTC的固定偏移量

3.2 使用datetime模块中的datetime类将时间戳转换为格式化时间字符串

使用datetime类将时间戳转换为datetime实例:

>>> import time
>>> from datetime import datetime
>>> dt = datetime.fromtimestamp(time.time())
>>> dt
datetime.datetime(2019, 2, 26, 15, 27, 28, 678923)

将datetime实例转换为格式化字符串:

>>> dt.strftime('%Y-%m-%d %H:%M:%S')
'2019-02-26 15:27:28'

3.3 使用datetime模块中的datetime类将格式化时间字符串转换为时间戳

使用datetime类将格式化字符串'2019-02-26 15:27:28'转换为datetime实例:

>>> st = '2019-02-26 15:27:28'
>>> dt = datetime.strptime(st, '%Y-%m-%d %H:%M:%S')
>>> dt
datetime.datetime(2019, 2, 26, 15, 27, 28)

将datetime实例转转为元组(struct_time):

>>> tp = dt.timetuple()
>>> tp
time.struct_time(tm_year=2019, tm_mon=2, tm_mday=26, tm_hour=15, tm_min=27, tm_sec=28, tm_wday=1, tm_yday=57, tm_isdst=-1)

将元组(struct_time)转换为时间戳:

>>> time.mktime(tp)
1551166048.0

也可以直接使用datetime实例的timestamp()函数直接获取时间戳:

>>> dt.timestamp()
1551166048.0

3.4 使用datetime类获取当前日期和时间

使用datetime类获取当前日期:

>>> datetime.now().date().strftime('%Y-%m-%d')
'2019-02-26'

使用datetime类获取当前时间:

>>> datetime.now().time().strftime('%H:%M:%S')
'15:48:43'

4. 参考资料

Python 日期和时间戳的转换的更多相关文章

  1. python中时间、日期、时间戳的转换

    1.简介 在编写代码时,往往涉及时间.日期.时间戳的相互转换. 2.示例 # 引入模块 import time, datetime 2.1 str类型的日期转换为时间戳 # 字符类型的时间 tss1 ...

  2. Python3 日期与时间戳互相转换(函数可调用)

    一.前言 在开发中,我们经常会遇到时间戳转换日期,或者日期转换为时间戳: 日期格式:2019-08-01 00:00:00 时间戳格式:1564588800 关于时间戳 Unix时间戳(Unix ti ...

  3. MySQL 日期和时间戳互相转换

    ① 时间戳转换成日期 FROM_UNIXTIME 例如: 数据表中 invest_time 存储的是时间戳,如 1429063399 使用 FROM_UNIXTIME 可以把时间戳转换为日期: sel ...

  4. 前端(js/jquery) 日期和时间戳的转换

    一.JavaScript中获取当前时间的时间戳 方法一: var timestamp=Date.parse(new Date()); ====>结果是:1451441086000 注:这种方式精 ...

  5. MySQL中日期和时间戳互相转换的函数和方法

     时间戳转换成日期 复制代码代码如下: FROM_UNIXTIME 例如: 数据表中 invest_time 存储的是时间戳,如 1429063399 使用 FROM_UNIXTIME 可以把时间戳转 ...

  6. jq日期与时间戳互相转换

    方法1:$.extend({ myTime: { CurTime: function () { return Date.parse(new Date()) / 1000; }, DateToUnix: ...

  7. Shell Python 日期和时间戳的互相转换

    一.初衷: 很多时候,时间的存储都是时间戳格式,如果需要展示就要转化成标准格式日期.也许会需要date和timestamp互转. 二.方法: 1.Shell下对date和timestamp的互转,是通 ...

  8. Python时间,日期,时间戳之间转换,时间转换时间戳,Python时间戳转换时间,Python时间转换时间戳

    #1.将字符串的时间转换为时间戳方法: a = "2013-10-10 23:40:00" #将其转换为时间数组 import time timeArray = time.strp ...

  9. python 时间、日期、时间戳的转换

    在实际开发中经常遇到时间格式的转换,例如: 前端传递的时间格式是字符串格式,我们需要将其转换为时间戳,或者前台传递的时间格式和我们数据库中的格式不对应,我们需要对其进行转换才能与数据库的时间进行匹配等 ...

随机推荐

  1. (转)win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案

    本文转载自:http://www.cnblogs.com/finesite/archive/2011/01/28/1946940.html 网上搜的解决方案但在我的环境下仍旧没有解决,我的方法如下: ...

  2. (转)Inno Setup入门(二)——修改安装过程中的图片

    本文转载自:http://blog.csdn.net/augusdi/article/details/8564793 修改安装过程中的图片 一般编译之后,安装过程中出现在左边图片是是下图这个样子的: ...

  3. iRedMail的搭建过程记录

    iRedMail的搭建和注意事项 经过一段时间的折腾,终于将iRedMail搭建起来了,下面介绍一下搭建的过程,以及注意事项. 注意事项:  1. iRedMail不支持重复安装,如果安装错误,请重置 ...

  4. 5月15日上课笔记-js中 location对象的属性、document对象、js内置对象、Date事件对象、

    location的属性: host: 返回当前主机名和端口号 定时函数: setTimeout( ) setInterval() 二.document对象 getElementById(); 根据ID ...

  5. SQL Server Management Studio (SSMS)

    最新的SQLServer数据库已经不集成SQL Server Management Studio需要单独下载安装. https://docs.microsoft.com/zh-cn/sql/ssms/ ...

  6. Fastq 常用软件

    文章转载于 Original 2017-06-08 Jolvii 生信百科 由于生物信息的大部分工作都是在没有 root 权限的集群上进行的,本期我主要介绍一下非 root 用户怎么安装常用的软件.工 ...

  7. 第七章 : Git 介绍 (上)[Learn Android Studio 汉化教程]

    Learn Android Studio 汉化教程 [翻译]Git介绍 Git版本控制系统(VCS)快速成为Android应用程序开发以及常规的软件编程领域内的事实标准.有别于需要中心服务器支持的早期 ...

  8. windows下使用SQLPLUS制作BAT执行SQL文件

    假如你把需要的SQL操作信息等均放入到一个SQL文件中,需要制作一个bat文件来执行这个sql文件,那么你的bat文件中,在sqlplus登录语句后的信息不能换行,换行的话则执行登录sqlplus后就 ...

  9. SpringData JPA 接口和方法

    1.1 简单查询--接口方法 1.2 五个接口详解 1.2.1    CrudRepository接口 其中T是要操作的实体类,ID是实体类主键的类型.该接口提供了11个常用操作方法. @NoRepo ...

  10. 关于Web项目出现懒加载异常的解决方案

    manytomany关系中,使用 fetch = FetchType.LAZY 来做懒加载,加快些性能.但是却一直出错,原因是session被关闭,要保持session,需要事务. Hibernate ...