博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3学习笔记30-datetime模块
阅读量:6315 次
发布时间:2019-06-22

本文共 2649 字,大约阅读时间需要 8 分钟。

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

 

获取当前的日期和时间

from datetime import datetimenow = datetime.now()print(now)print(type(now))

from datetime import datetime 第一个datetime是模块,第二个datetime是该模块下的类。

这个类下面的.now()返回当前日期和时间,其类型是datetime

如果只写import datetime。需要datetime.datetime.now()

 

获取指定日期和时间

from datetime import datetimedt = datetime(2017,4,19,23,45)print(dt)

通过传入参数可直接获得指定的日期和时间

 

 

datetime转换为timestamp

1970年1月1日00:00:00 UTC+00:00时区的时刻称为epoch time,记为0。当前时间相对于epoch time的秒数,称为timestamp,1970年前的时间timestamp为负数 。

假定时间已校准,那么全球各地的计算机任意时刻的timestamp都是完全相同的,所以计算机存储的当前时间用timestamp表示。

调用timestamp()方法,将datetime转换成timestamp

from datetime import datetimedt = datetime(2017,4,19,23,45)print(dt)ts = dt.timestamp()print(ts)

 

timestamp转换成datetime

from datetime import datetimedt = datetime(2017,4,19,23,45)print(dt)ts = dt.timestamp()print(ts)print(datetime.fromtimestamp(ts))print(datetime.utcfromtimestamp(ts))

使用fromtimestamp()可将timestamp转换成本地时间

使用utcfromtmestamp()可将timestamp转成成utc时间

因为北京是utc+8:00,所以utc时间会减少八小时

 

str转换成datetime

from datetime import datetimetimes = '2015-12-24 18:29:30'print(type(times))cd = datetime.strptime(times,'%Y-%m-%d %H:%M:%S')print(type(cd))

通过datetime.strptime()实现,需要一个日期和时间的格式化字符串,格式可参考。转换后的datetime没有时区信息

 

datetime转换成str

from datetime import datetimenow = datetime.now()print(now.strftime('%a, %b %d %H:%M:%S'))

使用strftime()可将datetime转换成对应格式的str

 

datetime加减

from datetime import datetime,timedeltanow = datetime.now()print(now)print(now+timedelta(days=1,hours=10))

通过timedelta类,使用+,- 可计算前几天或后几天的时间

 

 

本地时间转换为utc时间

本地时间是指系统设置时区的时间,比如北京时间是UTC+8:00时区的时间,而UTC时间是指UTC+0:00的时间

datetime类型有时区属性tzinfo,但是默认为None,可以通过给date设置时区来区分哪个时区

from datetime import datetime,timedelta,timezonetz = timezone(timedelta(hours=8))#创建时区UTC+8:00now = datetime.now()print(now)dt = now.replace(tzinfo=tz)#设置为UTC+8:00print(dt)

 

时区转换

from datetime import datetime,timedelta,timezoneutc = datetime.utcnow().replace(tzinfo = timezone.utc)#拿到当前utc时间,并将时区设置为utc+0:00print(utc)bj = utc.astimezone(timezone(timedelta(hours=8)))#将时区转换为北京时间print(bj)

使用utcnow()可获得当前utc时间,使用带时区的datetime,通过astimezone()方法,可以转换到任意时区

 

练习

假设你获取了用户输入的日期和时间如2015-1-21 9:01:30,以及一个时区信息如UTC+5:00,均是str,请编写一个函数将其转换为timestamp:

from datetime import datetime, timezone, timedeltadef to_timestamp(dt_str, tz_str):    time1 = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S')    hours = int(tz_str[3:tz_str.index(':')])    tz = timezone(timedelta(hours=hours))    dt = time1.replace(tzinfo=tz)    return dt.timestamp()t1 = to_timestamp('2015-6-1 08:10:30', 'UTC+7:00')assert t1 == 1433121030.0, t1t2 = to_timestamp('2015-5-31 16:10:30', 'UTC-09:00')assert t2 == 1433121030.0, t2print('ok')

 

转载于:https://www.cnblogs.com/myal/p/9361711.html

你可能感兴趣的文章
PAT 解题报告 1004. Counting Leaves (30)
查看>>
Android开发之蓝牙 --修改本机蓝牙设备的可见性,并扫描周围可用的蓝牙设备
查看>>
[Head First设计模式]生活中学设计模式——外观模式
查看>>
Repository模式中,Update总是失败及其解析
查看>>
.Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序
查看>>
C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能
查看>>
CleanBlog(个人博客+源码)
查看>>
项目管理理论与实践(5)——UML应用(下)
查看>>
java socket解析和发送二进制报文工具(附java和C++转化问题)
查看>>
ASP.NET中常用的26个优化性能方法
查看>>
python发邮件
查看>>
Warning: Data truncated for column 'AirPress' at row 1
查看>>
Java序列化Serializable
查看>>
php特级课---4、网站服务监控
查看>>
考拉定时任务框架kSchedule
查看>>
[LeetCode] N-ary Tree Preorder Traversal N叉树的前序遍历
查看>>
nginx启动常遇到的问题
查看>>
【WCF】解析WCF服务的搭建
查看>>
java阻塞队列与非阻塞队列
查看>>
tomcat占用cpu过高解决办法
查看>>