Python时间日期操作:格式化,日期天数加减等

老丁

记录几个日常工作中常用的时间日期处理。

Python 的 datetime 模块包含可用于处理日期和时间值的方法

import datetime


1,python获取今天/明天/昨天的日期

# <class 'datetime.date'>
today=datetime.date.today() # 2022-10-13
yesterday = today + datetime.timedelta(days=-1)) # 2022-10-12
tomorrow = today + datetime.timedelta(days=1)) # 2022-10-14

# 当前时间
now = datetime.datetime.now() # <class 'datetime.datetime'> 2024-04-01 10:49:11.464192
now1 = now.strftime("%Y-%m-%d %H:%M:%S") # <class 'str'> 2024-04-01 10:49:11


2,获取当天零点

# # 获取今天零点(当天0点时间)
now = datetime.datetime.now() # <class 'datetime.datetime'> 2024-04-01 10:33:20.658119
yes_time = now + datetime.timedelta(days=-1) # <class 'datetime.datetime'> 2024-03-31 11:09:35.264467 
# 方式1:返回<class 'datetime.datetime'>
today_zero = now - datetime.timedelta(hours=now.hour, minutes=now.minute, seconds=now.second,microseconds=now.microsecond) # <class 'datetime.datetime'> 2024-04-01 00:00:00
# 方式2:返回<class 'str'>
today_zero = now.strftime('%Y-%m-%d 00:00:00') # <class 'str'> 2024-04-01 00:00:00

3,<class 'datetime.date'>与<class 'datetime.datetime'>互转

#定义date
# # date转换成datetime
today_d = datetime.date.today() # <class 'datetime.date'> 2024-04-01
# today_dt = datetime.datetime.combine(today_d ,datetime.time()) # <class 'datetime.datetime'> 2024-04-01 00:00:00
today_dt = datetime.datetime.strptime(str(today_d),'%Y-%m-%d') # <class 'datetime.datetime'> 2024-04-01 00:00:00
# datetime转换date
today_copy = today_dt.date() # <class 'datetime.date'> 2024-04-01

2,python时区转化加减

经常使用到的场景是时区之间的转化。比如UTC+0时间转北京时间等,北京时间是东八区(UTC+8)

time_Arr_utc8 = time_Arr_utc0+datetime.timedelta(hours=8)


3,python时间加减

一场足球比赛大致是105分钟,所以知道比赛开始时间,那么结束时间就是基础上+105分钟;

startime='2022-12-27 01:30:00'
endDate=startime+datetime.timedelta(minutes=105) # 2022-12-27 03:15:00


4,python日期时间格式化

4.1,strftime 将日期转换为字符串

国外的日期时间显示方式和国内的又少些的不同,国内一般是“年-月-日 时间”,国外一般是“日-月-年 时间”

startime='2022-12-27 01:30:00' # 字符串
en_full_time = datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S') # 字符串转时间
en_short_time = en_full_time.strftime("%d %b %H:%M") # 27 Dec 01:30

strftime 方法格式化日期的指令如下:

%b: 返回月份名称的前三个字符。在我们的例子中,它返回 “Sep”。

%d: 返回本月的日期,从 1 到 31。在我们的例子中,它返回 “15”。

%Y: 返回四位数格式的年份。在我们的例子中,它返回 “2018”。

%H: 返回小时。在我们的例子中,它返回 “00”。

%M: 返回分钟,从 00 到 59。在我们的例子中,它返回 “00”。

%S: 返回秒,从 00 到 59。在我们的例子中,它返回 “00”。

%a: 返回工作日的前三个字符,例如 Wed。

%A: 返回返回工作日的全名,例如 Wednesday。

%B: 返回月份的全名,例如 September。

%w: 返回工作日作为数字,从 0 到 6,周日为 0。

%m: 将月份作为数字返回,从 01 到 12。

%p: 返回 AM/PM 标识。

%y: 返回两位数格式的年份,例如,”18“ 而不是 ”2018“。

%f: 返回从 000000 到 999999 的微秒。

%Z: 返回时区。

%z: 返回 UTC 偏移量。

%j: 返回当年的日期编号,从 001 到 366。

%W: 返回年份的周数,从 00 到 53。星期一被记为一周第一天。

%U: 返回年份的周数,从 00 到 53。星期日被记为一周第一天。

%c: 返回本地日期和时间版本。

%x: 返回本地日期版本。

%X: 返回本地时间版本。


4.2,strptime 将字符串转换成日期

from datetime import datetime

str = '9-15-18'
date_object = datetime.strptime(str, '%m-%d-%y') # 2018-09-15 00:00:00


5,获取年月日

from datetime import date

# 创建一个日期对象
today = date.today()

# 获取年份
year = today.year

# 获取月份
month = today.month

# 获取日
day = today.day

print("当前日期:", today)
print("年份:", year)
print("月份:", month)
print("日:", day)


发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,699人围观)

还没有评论,来说两句吧...