python3之time、datetime、random

时间:2023-03-09 21:30:36
python3之time、datetime、random

UTC:协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。

中国属于东八区,领先世界时间8小时

time模块

time.time():以时间戳的格式获取当前时间

>>> import time
>>> time.time()
1535703909.7759054

time.gmtime(n):将时间戳格式转化为元组时间格式显示,时间为UTC时区;参数n为传入的时间戳,如果不传,则默认是当前时间

返回结果:time.struct_time(tm_year=1973, tm_mon=11, tm_mday=29, tm_hour=21, tm_min=33, tm_sec=9, tm_wday=3, tm_yday=333, tm_isdst=0);(年,月,日,时,分,秒,每周的第几天从0开始,当年的第多少天,夏令时)

>>> import time

>>> time.gmtime(123456789)    # 传入时间戳,将时间戳转化为元组时间格式显示
time.struct_time(tm_year=1973, tm_mon=11, tm_mday=29, tm_hour=21, tm_min=33, tm_sec=9, tm_wday=3, tm_yday=333, tm_isdst=0)

>>> time.gmtime()    # 未传参数,默认是当前的时间戳
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=31, tm_hour=8, tm_min=34, tm_sec=45, tm_wday=4, tm_yday=243, tm_isdst=0)

time.localtime(n):将时间戳格式转化为元组是按格式显示,时间为UTC+8小时 时区;参数n为传入的时间戳,如果不传,则默认是当前时间

>>> import time
>>> n = time.localtime(11111111)
>>> print("%d年%d月%d日" % (n.tm_year, n.tm_mon, n.tm_mday))    # 读取元祖时间格式
1970年5月9日
>>> n
time.struct_time(tm_year=1970, tm_mon=5, tm_mday=9, tm_hour=22, tm_min=25, tm_sec=11, tm_wday=5, tm_yday=129, tm_isdst=0)

time.mktime(n):将元组时间格式转化为时间戳

>>> import time
>>> n = time.localtime()
>>> n
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=31, tm_hour=16, tm_min=45, tm_sec=14, tm_wday=4, tm_yday=243, tm_isdst=0)
>>> time.mktime(n)
1535705114.0

time.strftime("%Y-%m-%d %H:%M:%S", format):将元组时间格式转化为格式化字符串;

各个字节代表:%Y:tm_year;%m:tm_mon;%d:tm_mday;%H:tm_hour;%M:tm_min;%S:tm_sec

>>> import time
>>> n = time.localtime()
>>> n
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=31, tm_hour=16, tm_min=52, tm_sec=30, tm_wday=4, tm_yday=243, tm_isdst=0)
>>> time.strftime("%Y-%m-%d %H:%M:%S", n)
'2018-08-31 16:52:30'

time.strptime("2018-08-01 00:30:59", "%Y-%m-%d %H:%M:%S"):将格式化字符串转化为元组时间格式

>>> import time
>>> time.strptime("2018-08-01 00:30:59", "%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=1, tm_hour=0, tm_min=30, tm_sec=59, tm_wday=2, tm_yday=213, tm_isdst=-1)

time.asctime(tuple):将元组时间格式转化为"%a %b %d %H-%M-%S %Y"

注释:%a:星期几;%b:月份;%d:当月的第多少天

>>> import time
>>> time.asctime(time.localtime())
'Fri Aug 31 17:03:16 2018'

time.ctime(seconds):将时间戳转化为"%a %b %d %H-%M-%S %Y"

>>> import time
>>> time.ctime(time.time())
'Fri Aug 31 17:05:56 2018'

datetime模块

>>> import datetime
>>> datetime.datetime.now()    # 获取当前时间
datetime.datetime(2018, 8, 31, 17, 16, 14, 801421)
>>> print(datetime.datetime.now())    # 获取当前时间
2018-08-31 17:16:20.034465
>>> datetime.datetime.now() + datetime.timedelta(3)    # 获取当前时间往后 + 三天的时间
datetime.datetime(2018, 9, 3, 17, 16, 23, 807373)
>>> datetime.datetime.now() - datetime.timedelta(2)    # 获取当前时间往后 - 两天的时间
datetime.datetime(2018, 8, 29, 17, 16, 28, 195937)
>>> datetime.datetime.now() + datetime.timedelta(hours = 3)    # 获取当前时间 + 三小时
datetime.datetime(2018, 8, 31, 20, 16, 34, 494012)
>>> datetime.datetime.now() + datetime.timedelta(minutes = 30)    # 获取当前时间 + 30分钟
datetime.datetime(2018, 8, 31, 17, 46, 38, 917607)
>>> datetime.datetime.now() + datetime.timedelta(seconds = 3)    # 获取当前时间 + 3秒
datetime.datetime(2018, 8, 31, 17, 16, 51, 837951)

random模块

# 随机返回区间(0,1)任意浮点数
print(random.random())
# 随机返回区间[1,3]任意整数数
print(random.randint(1,3))
# 随机返回区间[0,3)任意整数数
print(random.randrange(3))
# 随机返回可迭代序列中的一个
print(random.choice("hello"))
# 随机返回可迭代序列中的三个
print(random.sample("hello", 3))
# 随机返回区间(1,3)任意浮点数
print(random.uniform(1,3)) # 将一个有序数列,打乱重新排序
n = [1, 2, 3, 4, 5, 6]
random.shuffle(n)
print(n)