概述
在将数据存储于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对时间的灵活处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复