datetime 模块提供的 time 对象,和本章的 Time 对象类似, 但前者提供了更丰富的方法和操作符。
- 使用 datetime 模块来编写一个程序,获取当前日期并打印当天是周几。
- 编写一个程序,接受一个生日作为输入,并打印用户的年龄以及距离下个生日所需要的天数、小时数、分钟数和秒数。
- 对于两个不在同一天出生的人来说,总有一天,一个人的出生天数是另一个人的两倍。我们把这一天称为 ‘‘双倍日’’。编写一个程序,接受两个不同的出生日期, 并计算他们的 ‘‘双倍日’’。
- 再增加点挑战,编写一个更通用的版本,用于计算一个人出生天数是另一个人 n 倍的日子。
题1
1
2
3
4
5
6
7
| from datetime import date
today = date.today()
#print(dir(today)) #打印属性、方法列表
print("今天是星期%d." % (today.weekday()+1)) # weekday返回的值是从0开始的,所以+1
|
题2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| from datetime import datetime
def days_until_birthday(birthday):
"""距离下一次生日还有多长时间"""
today = datetime.today()
next_birthday = datetime(today.year, birthday.month, birthday.day)
if today > next_birthday:
next_birthday = datetime(today.year+1, birthday.month, birthday.day)
delta = next_birthday - today
return delta.days
today = datetime.today()
print(today.strftime('%A')) #星期几
birthday = datetime(1999,5,10)
print(days_until_birthday(birthday))
|
题3和题4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| from datetime import datetime
def double_day(b1,b2):
"""计算,什么时候一个人的出生天数是另外一个人的两倍"""
if b1 > b2:
delta = b1 - b2
dday = b1 + delta
return dday
elif b2 > b1:
delta = b2 - b1
dday = b2 + delta
return dday
else:
return False
def ntimes_day(b1,b2,n):
"""计算,什么时候一个人的出生天数是另外一个人的n倍"""
if b1 > b2:
delta = b1 - b2
dday = b1 + (n-1)*delta
return dday
elif b2 > b1:
delta = b2 - b1
dday = b2 + (n-1)*delta
return dday
else:
return False
b1 = datetime(1999,5,10)
b2 = datetime(2003,5,16)
print('两倍:',double_day(b1,b2))
print('6倍: ',ntimes_day(b1,b2,6))
|