datetime和monthrange,timedelta
代码语言:javascript
复制# coding=utf-8
"""
@Project :pachong-master
@File :time_test.py
@Author :gaojs
@Date :2022/7/10 15:50
@Blogs : https://www.gaojs.com.cn
"""
import time
from datetime import datetime, timedelta
# 获取某个月共有多少天
from calendar import monthrange
def print_time():
"""
print函数测试用时
:return:
"""
time.sleep(5)
print('我是一名合格的测试工程师!')
def all_func_time():
"""
程序或者函数用时
:return:
"""
start = time.time()
print_time()
end = time.time()
print(f'调用test_print_time函数,花费时间 {start - end} ')
def get_current_time():
"""
获取当前时间:
2022-07-10 15:59:55.724610
:return:
"""
print(str(datetime.now()))
# 指定输出的时间格式:22-07-10 16:03:20
finaldate = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(f'**************finaldate是 {finaldate} ****************')
# 也可以使用time类库来格式化显示字符串 2022-07-10 16-06-13
local_time = time.strftime('%Y-%m-%d %H-%M-%S', time.localtime())
print(f'**************localtime是 {local_time} ****************')
# 字符串时间转化为整数时间 1657440200
secondall = int(time.mktime(time.strptime('2022-07-10 16:03:20', '%Y-%m-%d %H:%M:%S')))
print(f'**************secondall是 {secondall} ****************')
# 数字表示的时间转化为字符串表示
data_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1657440200))
print(f'**************data_time是 {data_time} ****************')
def time_year():
"""
datetime.now()学习
:return:
"""
datelist = datetime.now().year, datetime.now().month, datetime.now().day
# (2022, 7, 10)
print(datelist)
timelist = datetime.now().hour, datetime.now().minute, datetime.now().second
# (16, 19, 25)
print(timelist)
# 毫秒
micro_time = datetime.now().microsecond
# 149593
print(micro_time)
# 获取当前是星期几
week_time = datetime.now().weekday()
# 今天是星期6
print(f'今天是星期{week_time} ')
def get_weekday():
"""
给定时间日期对应星期几 :历史上的 2022-08-25 是星期 3
:return:
"""
test_day = '2022-08-25'
# 先把字符串转换成datetime对象
week_day = datetime.strptime(test_day, '%Y-%m-%d')
# 获取星期几
result = week_day.weekday()
print(f'历史上的 {test_day} 是星期 {result} ')
def time_before_or_after():
"""
从某个时间点往前或者后推 一段时间:
历史上的 2022-08-25 ,往后推120 天 是 2022-12-23, 是星期 4
历史上的 2022-08-25 ,往前推120 天 是 2022-04-27, 是星期 2
:return:
"""
test_day = '2022-08-25'
date_day = datetime.strptime(test_day, '%Y-%m-%d').date()
# 往后推 120天
after_date = date_day timedelta(days=120)
week_date = after_date.weekday()
# 历史上的 2022-08-25 ,往后推120 天 是 2022-12-23, 是星期 4
print(f'************* 历史上的 {test_day} ,往后推120 天 是 {after_date}, 是星期 {week_date} *************')
# 往前推120天
before_date = date_day - timedelta(days=120)
before_week_date = before_date.weekday()
# 历史上的 2022-08-25 ,往前推120 天 是 2022-04-27, 是星期 2
print(f'************* 历史上的 {test_day} ,往前推120 天 是 {before_date}, 是星期 {before_week_date} *************')
def get_month_days():
"""
获取某个月共有多少天:
from calendar import monthrange
# monthrange返回的是元组
# 第一个元素是指定月第一天是星期几
# 第二个元素是指定月有多少天
:return:
"""
# 最方便的方法是使用 calendar 模块里面的 函数 :(6, 31)
month_day = monthrange(2022, 5)
# 第一个元素是指定月第一天是星期几, 第二个元素是指定月有多少天(6, 31)
print(month_day)
def get_date_weekday():
"""
获取指定日期那周的周一
:return:
"""
test_day = '2022-08-25'
date_day = datetime.strptime(test_day, '%Y-%m-%d').date()
print(date_day.weekday())
monday_weekdate = date_day - timedelta(days=date_day.weekday())
print(f'*****************历史上的这周的周一是 {monday_weekdate} ****************')
if __name__ == '__main__':
# 获取当前时间及格式化时间
get_current_time()
# datetime.now()联系
time_year()
# 给定时间日期对应星期几 :历史上的 2022-08-25 是星期 3
get_weekday()
# 从某个时间点往前或者后推 一段时间:
time_before_or_after()
# 获取某个月共有多少天:
get_month_days()
# 获取指定日期那周的周一
get_date_weekday()