我是靠谱客的博主 寂寞心情,最近开发中收集的这篇文章主要介绍python对时间的灵活处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在将数据存储于MySQL、Oracle等时,对时间的操作会比较频繁,比如,数据第一次保存于数据库的时间(create_time),数据的更新时间(update_time),查询某个时间等等。在对时间进行操作时,往往会涉及到时间、日期、时间戳之间的各种转换,下面简单介绍几个常用的转换方法。

1、用到的模块
用到的模块有两个:time模块和datetime模块

import time,datetime

2、获取不同要求的时间(字符串格式)

from datetime import datetime, timedelta

today = datetime.now()  # 今天
yesterday = today - timedelta(days=1)  # 昨天
last_year_today = datetime(today.year - 1, today.month, today.day)  # 去年今天
if today.month == 1:
    last_month_today = datetime(today.year - 1, 12, today.day, )  # 上月今日
else:
    last_month_today = datetime(today.year, today.month - 1, today.day, )  # 上月今日

print(f'当前时间是:{today}')
print(f'昨天当前时间是:{yesterday}')
print(f'去年今天是:{last_year_today}')
print(f'上月今日是:{last_month_today}')

运行结果:

当前时间是:2022-03-06 17:18:06.242593
昨天当前时间是:2022-03-05 17:18:06.242593
去年今天是:2021-03-06 00:00:00
上月今日是:2022-02-06 00:00:00

3、获取当前时间(指定时间)往前n天的日期

def get_week_day(week):
    week_day_dict = {
        0: '一',
        1: '二',
        2: '三',
        3: '四',
        4: '五',
        5: '六',
        6: '日',
    }
    day = week.weekday()
    return week_day_dict[day]

date0 = '2022-04-06'  # 指定日期
print(f"当期日期为{date0}")
n = -185  # 当前日期前n天
# 将字符串格式的日期转换为datetime.datetime格式,用来判断是周几
date_ori = datetime.strptime(date0, '%Y-%m-%d')
date_n = (date_ori + timedelta(days=n)).strftime("%Y-%m-%d")  # 获取当前日期的前n天日期
print(f"当前日期{date0}的前{abs(n)}天的日期:{date_n}")
print(f'当前日期{date0}的前{abs(n)}天是周{get_week_day(date_ori)}n')

运行结果

当期日期为2022-04-06
当前日期2022-04-06的前185天的日期:2021-10-03
当前日期2022-04-06的前185天是周三

4、更改周的起始时间,并获取前n周的起始时间

def getNWeeksBefore(today, n):
    ywd = today.isocalendar()  # (year,week,周几)--得要计算的日期是周几
    # 可以根据需要改变判断条件(改变周的起始时间)
    if ywd[2] < 6:
        last_week_end_day = today + timedelta(days=-(ywd[2] + 2))  # 上周的最后一天(周五)
    else:
        last_week_end_day = today + timedelta(days=-(ywd[2] - 5))
    log.info(f'以周六为一周的第一天标准下,上周最后一天是:{last_week_end_day}')
    # 周历史数据,往前倒26周的第一天
    start_day_before26 = last_week_end_day + timedelta(days=(-(n - 1) * 7 - 6))
    return start_day_before26, last_week_end_day


# 将字符串格式的日期转换为datetime.datetime格式,用来判断是周几
date_ori = datetime.strptime(date0, '%Y-%m-%d')

# 当前日期前26周的第一天和上周的最后一天
start_day_before26, last_week_end_day = getNWeeksBefore(date_ori, 26)
print(start_day_before26, last_week_end_day)

运行结果

以周六为一周的第一天标准下,上周最后一天是:2022-04-01 00:00:00

2021-10-02 00:00:00 2022-04-01 00:00:00

最后

以上就是寂寞心情为你收集整理的python对时间的灵活处理的全部内容,希望文章能够帮你解决python对时间的灵活处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部