python获取系统时间月份_Python系统:日期和时间1

“一起学习,一起成长!“

表示日期的第一个问题就是二义性。

什么是二义性?举例说明:7表示月份,29表示天数,因为月份不可能是29.但是1/6/2012呢?它到底是1月6日,还是6月1日?

闰年是另一个问题,年份是整百数时,必须是400的倍数才是闰年。下面的代码可以检测是否是闰年:

>>> import calendar

>>> calendar.isleap(2000)

True

>>> calendar.isleap(2018)

False

>>> calendar.isleap(2019)

False

>>> calendar.isleap(2020)

True

1. datetime模块

首先介绍一下标准datetime模块。它定义了4个主要的对象,每个对象都有很多的用法:

date:处理年、月、日

time:处理时、分、秒和微秒

datetime:处理日期和时间同时出现的情况。

timedelta:处理日期和/或时间间隔

可以指定年、月、日,来创建一个date对象。这些值之后会变成对象的属性:

>>> from datetime import date

>>> halloween=date(2014,10,31)

>>> halloween

datetime.date(2014, 10, 31)

>>> halloween.day

31

>>> halloween.month

10

>>> halloween.year

2014

使用isoformat()方法打印一个date对象:

>>> halloween.isoformat()

'2014-10-31'

iso是指ISO 8601,一种表示日期和时间的国际标准。这个标准的显示顺序是从一般(年)

到特殊(日)。它也可以对日期进行正确的排序:先按照年,然后是月,最后是日。作者经常在程序中使用这种格式表示日期,还会在存储和日期相关的数据时当作文件名。

strptime()和strftime()方法,它们分别用来解析和格式化日期。

使用today()方法生成今天的日期:

>>> now=date.today()

>>> now

datetime.date(2018, 6, 24)

使用timedelta对象来实现date的加法:

>>> from datetime import timedelta

>>> one_day=timedelta(days=1)

>>> tomorrow=now+one_day

>>> tomorrow

datetime.date(2018, 6, 25)

>>> now+17*one_day

datetime.date(2018, 7, 11)

>>> yesterday=now-one_day

>>> yesterday

datetime.date(2018, 6, 23)

date的范围是date.min(年=1,月=1,日=1)到date.max(年=9999,月=12,日=31)。因此不能使用它来进行和历史或者天文相关的计算。

datetime模块中的time对象用来表示一天中的时间:

>>> from datetime import time

>>> noon=time(12,0,0)

>>> noon.hour

12

>>> noon.minute

0

>>> noon.second

0

>>> noon.microsecond

0

参数的顺序是按照时间单位从大(时)到小(微秒)排列。如果没有参数,time会默认全部使用0。

>>> from datetime import datetime

>>> some_day=datetime(2018,6,24,12,15,45)

>>> some_day

datetime.datetime(2018, 6, 24, 12, 15, 45)

>>> some_day.isoformat()

'2018-06-24T12:15:45'

中间的T把日期和时间分割开。

datetime有一个now()方法,可以用它获取当前日期和时间:

>>> from datetime import datetime

>>> now=datetime.now()

>>> now

datetime.datetime(2018, 6, 24, 15, 3, 25, 749511)

>>> now.month

6

>>> now.day

24

>>> now.hour

15

>>> now.minute

3

>>> now.second

25

>>> now.microsecond

749511

combine()方法:把一个date对象和一个time对象合并成一个datetime对象

>>> from datetime import datetime,time,date

>>> noon=time(12)

>>> this_day=date.today()

>>> noon_today=datetime.combine(this_day,noon)

>>> noon_today

datetime.datetime(2018, 6, 24, 12, 0)

>>> noon_today.isoformat()

'2018-06-24T12:00:00'

也可以使用date()和time()方法从datetime中取出date和time部分:

>>> noon_today.date()

datetime.date(2018, 6, 24)

>>> noon_today.time()

datetime.time(12, 0)

date:处理年、月、日

time:处理时、分、秒和微秒

datetime:处理日期和时间同时出现的情况

timedelta:处理日期和/或时间间隔,使用timedelta对象来实现date的加法。

isoformat()方法:使用isoformat()方法打印一个date对象

strptime()方法:解析日期

strftime()方法:格式化日期

today()方法:生成今天的日期

time()方法

now()方法:获取当前日期和时间

combine()方法:把一个date对象和一个time对象合并成一个datetime对象

2. 使用time模块

python的datetime模块中有一个time对象,python还有一个单独的time模块,这有点令人困扰。此外,time模块还有一个函数叫做time()。

time模块的time()函数会返回当前时间的纪元值:

>>> import time

>>> now=time.time()

>>> now

1529824590.8259535

ctime():把一个纪元值转换成一个字符串。

>>> time.ctime(now)

'Sun Jun 24 15:16:30 2018'

纪元值是不同系统(比如javascript)之间交换日期和时间的一种非常有用的方法。但是有时候想要真正的日期而不是一串数字,这时可以使用struct_time对象。localtime()会返回当前系统时区下的时间,gmtime()会返回UTC时间:

>>> time.localtime(now)

time.struct_time(tm_year=2018, tm_mon=6, tm_mday=24, tm_hour=15, tm_min=16, tm_sec=30, tm_wday=6, tm_yday=175, tm_isdst=0)

>>> time.gmtime(now)

time.struct_time(tm_year=2018, tm_mon=6, tm_mday=24, tm_hour=7, tm_min=16, tm_sec=30, tm_wday=6, tm_yday=175, tm_isdst=0)

mktime():把struct_time对象转换回纪元值:

tm=time.localtime(now)

>>> time.mktime(tm)

1529824590.0

这个值和之前now()返回的纪元值并不完全相同,因为struct_time对象只能精确到秒。

一些建议:尽量多使用UT来代替时区。UTC是绝对时间,和时区无关。如果你有服务器,把它的时间设置为UTC,不要使用本地时间。

如果有可能,绝对不是用夏时制时间。如果使用了夏时制时间,那每年的一段时间(春季)会少一个小时,另一段时间(秋季)会多一个小时。time()函数

ctime():把一个纪元值转换成一个字符串

localtime():返回当前系统时区下的时间

gmtime():返回UTC时间

mktime():把struct_time对象转换回纪元值

「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」

「诚邀关注“issnail”,会有惊喜哦!」

「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」

参考书目:python语言及其应用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值