Bootstrap

Python之日期时间模块

Python 程序能用很多方式处理日期和时间,如time模块、datetime、calendar 模块可以用于格式化日期和时间

一、time模块

1、time.localtime() 返回本地时间元组

import time
t1 = time.localtime()
print(t1)

打印内容:

time.struct_time(tm_year=2020, tm_mon=12, tm_mday=25, tm_hour=19, tm_min=48, tm_sec=42, tm_wday=4, tm_yday=360, tm_isdst=0)

元素 含义 取值
tm_year 年 4位数字,如2022
tm_mon 月 1~12,如2
tm_mday 日 1~31,如5
tm_hour 时 0~23,如7
tm_min 分 0~59,如50
tm_sec 秒 0~61(60或61是闰秒)
tm_wday 一周的第几日 0~6(0为周一,依此类推)
tm_yday 一年的第几日 1~366(366为儒略历)
tm_isdst 夏令时
1:是夏令时
0:非夏令时
-1:不确定

2、时间日期格式化输出

strftime()函数实现时间日期的格式化输出

import time
t1 = time.localtime()
t2=time.strftime("%Y-%m-%d %H:%M:%S", t1)
print(t2)

打印内容:

2020-12-25 19:51:30

Python中时间日期格式化符号如下:

格式 描述 实例
%y 年 两位表示(00-99)
%Y 年 四位表示(000-9999)
%m 月(数字01-12)
%b 月 简称 (如:Dec)
%B 月 完整名称 (如:December)
%d 日(数字0-31)
%H 时 24小时制(0-23)
%I 时 12小时制(01-12)
%p AM/PM
%M 分(00-59)
%S 秒(00-59)
%f 微妙(000000-999999)
%a 星期名简称(Wed)
%A 星期名完整称(Wednesday)
%w 星期(数字0-6),星期天为星期的开始
%W 周数,每周的第一天是周一(00-53)
%x 本地日期 (12/31/18)
%X 本地时间(17:41:00)
%z UTC 偏移
%Z 时区 CST
%c 本地相应的日期表示和时间表示 Mon Dec 31 17:41:00 2018
%j 年内的第几天(001-366)
%U 一年中的星期数(00-53)星期天为星期的开始

3、获取当前时间戳

t3 = time.time()  返回浮点数如:1675858691.0591984
t4=int(t3),将时间戳转为整型,如1675858691

4、读取当前时间并以易读方式表示,返回字符串

t5 = time.ctime() 返回如:Wed Feb  8 20:18:11 2023

5、设置等待时长

5.1、time.sleep() 线程推迟指定的时间运行 ,单位秒
如:>>> time.sleep(10)

5.2、若要生成一个固定范围内的随机等待时间,可以使用random.randint()

import random
import time
 
# 生成一个0到5之间的随机整数
wait_time = random.randint(0, 5)
time.sleep(wait_time)  # 实际等待

5.3、如果想从多个指定的时间中随机选择一个作为等待时间,可以使用random.choices()

# 定义等待时间的列表
wait_times = [1, 2, 3, 5, 8, 13]  # 示例等待时间列表
 
# 随机选择一个等待时间
random_wait_time = random.choice(wait_times)

6、将时间转为时间戳

import time

#获取当前时间,时间戳格式为浮点数
now=time.time()
print(now)
# 时间戳转为整型,去掉小数点部分
timestamp = int(now)
print(timestamp)

# 将指定时间转换为时间戳,strptime()将字符串对象转为时间日期对象,mktime()返回浮点数格式时间戳
time_str = '2022-01-01 12:00:00'
#strptime()将字符串解析为日期对象,其中参数1为要解析的日期字符串,参数2为日期字符串的格式
timestamp = int(time.mktime(time.strptime(time_str,'%Y-%m-%d %H:%M:%S'))) #%Y-%m-%d %H:%M:%S为time_str时间日期格式
print(timestamp)

如上时间戳为秒单位的时间戳,若要转为毫秒级时间戳只需要将秒级时间戳乘以 1000 即可,因为1秒等于1000ms
timestamp_ms=timestamp*1000
print(timestamp_ms)

二、datetime模块

1、获取当前日期和时间

from datetime import datetime
 
current_time= datetime.now()
print(current_time)

输出如下:

2024-12-19 19:29:55.454350

2、日期时间的格式化输出

from datetime import datetime
# 当前时间
current_time1= datetime.now() #当前时间未格式化输出
current_time2=current_time1.strftime("%Y-%m-%d %H:%M:%S")  #当前时间格式化输出
# 格式化输出
print(current_time1)
print(current_time2)

输出如下:

2024-12-19 19:48:51.147493
2024-12-19 19:48:51

3、日期时间的运算(加/减)

以利用 timedelta 类,from datetime import timedelta

from datetime import datetime,timedelta
# 当前时间
current_time = datetime.now()

# 增加时间,注意此处加减先不要进行格式化输出,如果需要格式化输出,请在加减之后
time_to_add = timedelta(hours=2, minutes=30)  # 调整增加时间:2小时30分钟
new_time = current_time + time_to_add  # 调整后的时间
print("调整后的时间:", new_time)  # 输出调整后的时间

# 减少时间,注意此处加减先不要进行格式化输出,如果需要格式化输出,请在加减之前
time_to_subtract = timedelta(hours=1, minutes=15)  # 调整减少时间:1小时15分钟
new_time_subtracted = current_time - time_to_subtract  # 调整后的时间
print("减少后的时间:", new_time_subtracted)  # 输出减少后的时间

4、时间日期转时间戳

from datetime import datetime

# 当前时间
current_time1= datetime.now()

# 格式化输出
current_time2=current_time1.strftime("%Y-%m-%d %H:%M:%S")

#strptime()将字符串解析为日期对象,其中参数1为要解析的日期字符串,参数2为日期字符串的格式
current_time3 = datetime.strptime(current_time2, "%Y-%m-%d %H:%M:%S")  #%Y-%m-%d %H:%M:%S为current_time2时间日期格式

#格式化日期转时间戳
current_time4=current_time3.timestamp()

#转为整型
current_time4=int(current_time4)
print(current_time4)

可定义一个时间转时间戳的函数:

import datetime
 
# 时间转时间戳,注意:参数time_str为字符串格式,可参考上面格式化一下
def time_to_timestamp(time_str):
    dt = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
    timestamp = int(dt.timestamp())
    return timestamp

5、时间戳转时间日期

from datetime import datetime

# 当前时间
current_time1= 1734610186

# fromtimestamp()用于将时间戳转换为日期对象
current_time2=datetime.fromtimestamp(current_time1)

#时间日期格式化输出
current_time3 =current_time2.strftime("%Y-%m-%d %H:%M:%S")

print(current_time3)

也可定义一个时间戳转时间的函数:

# 时间戳转时间
def timestamp_to_time(timestamp):
    dt = datetime.datetime.fromtimestamp(timestamp)
    time_str = dt.strftime("%Y-%m-%d %H:%M:%S")
    return time_str

三、Calendar模块

1、返回年日历或者月日历

import calendar

can1 = calendar.month(2023,2,w=2,l=1) #返回年份为2023,月份为2的月日历,默认3个月1行,月份间隔距离为c,月份中日间横向隔距离为w,纵向间隔距离为l
can2 = calendar.calendar(2023,c=6,w=2,l=1) #返回年份为year的年日历,默认3个月1行,月份间隔距离为c,月份中日间横向隔距离为w,纵向间隔距离为l
print(can1,can2)

can1返回内容:

在这里插入图片描述

can2返回内容:
在这里插入图片描述

;