若仅转换时间格式使用strftime(),若需要做时间操作则使用strptime()。
1、strptime()中的p指parse(解析), 一般解析都是说对字符串进行解析, 所以strptime()方法是将字符串解析为时间元组。
2、strftime()中的f指format(格式化), 即将时间处理为适合查看的格式, 所以strftime()方法是将时间元组格式化为字符串。
python中可以使用pandas库 / datetime库 / time库,改变时间格式。
一、 pandas改变时间格式:
import pandas as pd
ts = '2023-03-15 19:20:30'
# 将时间改为pandas的时间戳格式
day = pd.to_datetime(ts) # 或者pd.Timestamp(ts)
print(type(day)) #
print(str(day)) # 2023-03-15 19:20:30
day_pro = day.strftime("%Y-%m-%d") # 2023-03-15
二、 datetime改变字符串时间格式:
import os
from datetime import datetime, timedelta
# 转换日期的格式,必须先使用strptime转为对应格式的时间元组格式,再使用strftime转换时间格式
# 1、将字符串形式的时间解析为时间元组,时间格式为该字符串的时间格式
time = '2023-02-26'
t = datetime.strptime(time, "%Y-%m-%d") # datetime.datetime(2023, 2, 26, 0, 0)
print(type(t)) #
t_ = t - timedelta(days=1) # 减去1天
# 2、将时间元组格式化为字符串,此时的时间格式为其他格式
t_str = datetime.strftime(t_, "%Y/%m/%d %H:%M:%S") # 2023/02/25 00:00:00
print(type(t_str)) #
# 处理文件修改时间
ch_timestamp = os.path.getmtime(os.path.join(path, "test.txt")) # 1678790115.713
ch_hour_time = datetime.strptime(datetime.fromtimestamp(ch_timestamp).strftime("%Y-%m-%d %H:%M"), "%Y-%m-%d %H:%M").hour
ch_time = datetime.strptime(datetime.fromtimestamp(ch_timestamp).strftime("%Y-%m-%d %H:%M"), "%Y-%m-%d %H:%M") # 2023-03-14 18:31:00
now_time = datetime.strptime(datetime.now().strftime("%Y-%m-%d %H:%M"), "%Y-%m-%d %H:%M") # 2023-03-14 18:50:00
print(now_time + timedelta(days=1)) # 2023-03-15 18:50:00
now_dtime = datetime.strptime(datetime.now().strftime("%Y-%m-%d %H:%M"), "%Y-%m-%d %H:%M").hour
print(now_dtime - ch_dtime) # 1
三、 time改变字符串时间格式
import time
# 1、将字符串形式的时间解析为时间元组
t = '2020-07-21 18:10:10'
t_struct = time.strptime(t, "%Y-%m-%d %H:%M:%S")
print(t_struct) # time.struct_time(tm_year=2020, tm_mon=7, tm_mday=21, tm_hour=18, tm_min=10, tm_sec=10, tm_wday=1, tm_yday=203, tm_isdst=-1)
# 2、将时间元组格式化为字符串
t_str = time.strftime("%Y-%m-%d", t) # 2020-07-21 18:10:10
print(type(t_str)) #
# 处理文件修改时间
import os
import time
# 获取文件修改的时间戳
ch_timestamp = os.path.getmtime(os.path.join(path, "test.txt")) # 1678790115.713
timestruct = time.localtime(ch_timestamp) # time.struct_time(tm_year=2023, tm_mon=3, tm_mday=14, tm_hour=18, tm_min=35, tm_sec=15, tm_wday=1, tm_yday=73, tm_isdst=0)
t1 = time.strftime("%Y-%m-%d %H:%M:%S", timestruct) # # 2023-03-14 18:31:00
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 一年中的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% 表示%