python时间和日期操作(datetime和monthrange,timedelta)

2022-08-24 12:24:12 浏览数 (1)

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()

0 人点赞