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

datetime和monthrange,timedelta

# 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用datetime模块来获取当前季度的开始时间和结束时间,具体实现如下: ```python import datetime # 获取当前日期 today = datetime.date.today() # 计算当前季度的开始时间 quarter_start_month = (today.month - 1) // 3 * 3 + 1 quarter_start_date = datetime.date(today.year, quarter_start_month, 1) # 计算当前季度的结束时间 quarter_end_month = quarter_start_month + 2 last_day_of_quarter = datetime.date(today.year, quarter_end_month, 1) - datetime.timedelta(days=1) quarter_end_date = last_day_of_quarter print("当前季度的开始时间:", quarter_start_date) print("当前季度的结束时间:", quarter_end_date) ``` 运行以上代码,可以得到当前季度的开始时间和结束时间。例如,如果今天是2022年7月1日,那么输出结果如下: ``` 当前季度的开始时间: 2022-07-01 当前季度的结束时间: 2022-09-30 ``` 注意,上述代码中计算季度的方式是按照1-3月为第一季度,4-6月为第二季度,7-9月为第三季度,10-12月为第四季度。如果需要按照其他方式计算季度,可以根据具体情况修改代码。 ### 回答2: 要获取当前季度的开始时间和结束时间,可以使用Pythondatetime模块来实现。 首先,我们需要导入datetime模块: ```python import datetime ``` 接下来,我们可以使用datetime模块中的now()函数获取当前日期时间: ```python current_date = datetime.datetime.now() ``` 然后,我们可以使用当前日期的月份来计算当前季度的开始时间和结束时间。假设我们采用季度计算如下: - 第一季度:1月1日至3月31日 - 第二季度:4月1日至6月30日 - 第三季度:7月1日至9月30日 - 第四季度:10月1日至12月31日 我们可以按照上述定义来计算当前季度的开始时间和结束时间: ```python quarter_start = datetime.datetime(current_date.year, 3 * ((current_date.month - 1) // 3) + 1, 1) quarter_end = quarter_start + datetime.timedelta(days=89) ``` 在上述代码中,我们首先计算季度的开始月份,即`3 * ((current_date.month - 1) // 3) + 1`。然后,我们使用datetime.datetime函数传入年份、月份和日期来构造开始时间:`datetime.datetime(current_date.year, 3 * ((current_date.month - 1) // 3) + 1, 1)`。 接着,我们使用timedelta函数来计算结束时间,根据季度开始时间的基础上加上89天:`quarter_start + datetime.timedelta(days=89)`。 最后,我们可以打印出当前季度的开始时间和结束时间: ```python print("当前季度的开始时间:", quarter_start) print("当前季度的结束时间:", quarter_end) ``` 这样就可以获取当前季度的开始时间和结束时间了。 完整代码如下: ```python import datetime current_date = datetime.datetime.now() quarter_start = datetime.datetime(current_date.year, 3 * ((current_date.month - 1) // 3) + 1, 1) quarter_end = quarter_start + datetime.timedelta(days=89) print("当前季度的开始时间:", quarter_start) print("当前季度的结束时间:", quarter_end) ``` 注意:上述代码中,我们假设了一年恰好有365天,没有考虑闰年的情况。在实际应用中,需要根据具体需求进行适当的修改。 ### 回答3: 要获取当前季度的开始时间和结束时间,我们可以使用Pythondatetime库来操作日期时间。以下是一种实现方法: 首先,我们需要导入datetime和calendar模块: ``` import datetime import calendar ``` 然后,我们可以使用datetime.now()函数来获取当前日期时间: ``` current_date = datetime.datetime.now() ``` 接下来,我们可以使用current_date的month属性来获取当前月份: ``` current_month = current_date.month ``` 然后,我们可以使用当前月份来计算当前季度的开始月份和结束月份: ``` start_month = (current_month - 1) // 3 * 3 + 1 end_month = start_month + 2 ``` 接着,我们可以使用calendar.monthrange()函数来获取指定月份的天数: ``` start_day = 1 end_day = calendar.monthrange(current_date.year, end_month)[1] ``` 最后,我们可以使用datetime.datetime()函数来构造当前季度的开始时间和结束时间: ``` start_date = datetime.datetime(current_date.year, start_month, start_day) end_date = datetime.datetime(current_date.year, end_month, end_day) ``` 现在,start_date和end_date分别是当前季度的开始时间和结束时间。你可以根据需要对其进行进一步处理或打印输出。 注意:以上方法假设当前日期是以公历计算的。如需在其他历法中计算,请使用适当的模块和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懿曲折扇情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值