python123第七章,从0开始学python第七章-用python操作时间

WWW.HQS123.COM 少儿编程很轻松!

d491df4743e411dae53c1f00d3a72f93.png

时间

在动画片哆啦A梦里,有一集机器猫发明了时间机器。通过这个机器,可以在过去、现在、未来中穿梭,十分神奇。

cfdced5a38ac86ff71593a0dac8d484a.png

这节课,我们学习一下用python怎么操作时间,显示过去、现在、未来的时刻。

时间组成

97f8ba07c832758b935ac2207efc4fa6.png

我们知道时间是由 年月日时分秒来组成的,比如这个时间:2018-08-28 13:56:10。为了让我们的时间能够比较清楚的显示,我们需要约定一个固定的格式显示时间。比如我们举的例子里,8月份虽然只占了一位,但是为了表示清楚,我们用08来严格固定月份的位置。

这样我们的时间就可以用:年年年年-月月-日日 时时-分分-秒秒来组成了,我们经常会有英文的缩写来表达:YYYY-mm-dd HH:MM:SS。

时间操作

那我们对时间能做哪些操作呢?

定义一个时间

将时间按照某个格式输出

更改一个时间的天、小时等

比较时间大小

我们来看看用python怎么实现这些操作!

python的时间定义

获取当前时间

from datetime import datetime

now = datetime.now()

print('now =', now)

注意看我们打印的结果:year-month-day hour:minute:second.microsecond

定义一个指定时间的日期

dt = datetime(2015, 4, 19, 12, 20)

print('dt =', dt)

我们通过调用datetime函数,函数参数分别传入:年、月、日、时、分、秒来定义一个指定的时间。(后面的部分不传代表零分零秒等)

获取时间信息

获取时分秒

datetime获取的时间会返回一个时间对象,我们可以从里面获取对应的:年、月、日、时、分、秒;只需要调用对应的:now.year now.month now.day now.hour now.minute now.second即可。

datetime的日期部分和时间部分

我们知道,一个具体的时间包括:年月日的日期和时分秒的时间。这个用python里的:date、time 两个对象来表示。

print(dt.date())

print(dt.time())

增加时间 减少时间

我们如果想让时间前进一天或者后退一小时,可以使用 timedelta 模块。先看代码:

from datetime import datetime, timedelta

cday = datetime.now()

print('current datetime =', cday)

print('current + 10 hours =', cday + timedelta(hours=10))

print('current - 1 day =', cday - timedelta(days=1))

print('current + 2.5 days =', cday + timedelta(days=2, hours=12))

我们可以直接使用类似数学加减的方式来增加时间和减少时间。注意timedelta方法的参数,因为我们可以更改的部分很多(年月日时分秒),所以我们可以使用指定参数名的方式只填入要更改的部分。

显示日期

日期的显示方式有很多,比如:2018-08-28 13:56:10、2018年08月28日13点56分10秒、08月28日13点 。在python里,可以使用datetime的strftime函数来格式化一个时间,看代码:

cday = datetime.now()

print('strftime:', cday.strftime('%a, %b %d %H:%M'))

程序会输出:strftime: Mon, Jun 01 18:19

strftime方法里传入的参数就是我们想要让日期展示的样子。%a, %b %d %H:%M是日期的格式化字符。完整的格式化信息如下:

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

时间戳?

我们知道,python里有只有数字和字符串两种基础类型,那像这种年月日时分秒的日期是怎么表示的呢?

python和其他大多数编程语言一样,用一个数字来代表时间。数字时间精确到毫秒。0就代表 1970年1月1日 00:00:00。我们怎么从一个数字构建一个日期呢?看代码:

# 把timestamp转换为datetime:

t = dt.timestamp(1535455200)

print('timestamp -> datetime:', datetime.fromtimestamp(t))

# 把datetime转换为timestamp:

print('datetime -> timestamp:', dt.timestamp())

我们使用timestamp函数从时间戳获取时间;用timestamp函数获取日期对应的时间戳。

python对日期处理的函数较多,我们可以按照自己想做的事情找对应的方法,不应死记硬背每个函数。

小灶时间 为啥是1970年?

b1d129c6d92fb5bace1d08e7cabbf1c3.png

在讲时间戳的时候,我们说0代表的时间是: 1970年1月1日 00:00:00,这是电脑的unix系统(linux、osx系统的前身)在发布的时候定义的起始时间。这个时间也叫做纪元时间(epoch time)。

阿达老师-孩子身边的编程专家

始发于简书:阿达老师

WWW.HQS123.COM 少儿编程很轻松!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值