【Python】中的时间和日期操作
2020-08-15 本文已影响0人
吵吵人
网易笔试中,因为没能将最后的结果(时间格式)打印出来,导致笔试失败,后悔莫及……
模块: time 、calendar、datetime
time模块
时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示,能表示的时间间隔:1970-2038
-
时间元组
0(年) 1(月) 2(日) 3(时) 4(分) 5(秒) 6(一周第几日:0是周一) 7(一年第几日:1是第一天) 8 -
获取当前浮点时间
time()
import time
if __name__ == '__main__':
print(time.time())

- 获取当前人看的时间
ctime()
import time
if __name__ == '__main__':
print(time.ctime())

- 时间元组转换
浮点数->时间元组转换,只要将浮点数传递给如localtime()之类的函数
时间元组->可读模式:asctime()
import time
if __name__ == '__main__':
print(time.localtime(time.time()))

格式化时间:
strftime
import time
if __name__ == '__main__':
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))

几个常用的日期格式化符号:
前加%
年月日:ymd,Y是四位数,y是2位数年份
时分秒:HMS,H是24小时制,l是12小时制
星期月份文本表示:ab,AB是完整书写,ab是简写
本地A.M.或P.M.的等价符:p
本地相应的日期表示和时间表示:c
Sat Aug 15 17:01:28 2020
本地相应的日期:x
08/15/20
本地相应的时间:X
17:01:06
- 人工构造时间元组
import time
if __name__ == '__main__':
t = (2020, 8, 15, 17, 10, 12, 5, 227, -1)
print(time.asctime(t))
输出:
Sat Aug 15 17:10:12 2020
calendar
import calendar
if __name__ == '__main__':
cal = calendar.month(2016, 1)
print(cal)

datetime
datetime可以看作是在time之上,更高级的形式
问题:设现在时间是上午8点,输出12345秒之后的时间
strptime:将字符串时间转换成时间格式
strftime:调整时间格式
import datetime
if __name__ == '__main__':
setTime = '08-00-00'
now = datetime.datetime.strptime(setTime, '%H-%M-%S')
print('当前时间:', now.strftime('%H:%M:%S %p'))
endnow = now + datetime.timedelta(minutes=12345)
print('N秒之后:', endnow.strftime('%H:%M:%S %p'))
输出
当前时间: 08:00:00 AM
N秒之后: 21:45:00 PM
- 字符串输出时间格式
rjust():会返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
a = 12
b = 23
c = 3
print('{}:{}:{}'.format(str(a).rjust(2, '0'), str(b).rjust(2, '0'), str(c).rjust(2, '0')))
输出:
12:23:03