Python时间格式转换

概述-strptime()与strftime()

若仅转换时间格式使用strftime(),若需要做时间操作则使用strptime()。
1、strptime()中的p指parse(解析), 一般解析都是说对字符串进行解析, 所以strptime()方法是将字符串解析为时间元组,通常用于计算时间。
2、strftime()中的f指format(格式化), 即将时间处理为适合查看的格式, 所以strftime()方法是将时间元组格式化为字符串,通常用于显示或存储时间。
python中可以使用pandas库 / datetime库 / time库,改变时间格式。
常用:在DataFrame中,针对时间格式的数据,

一、 pandas改变时间格式:
time_stamp = pd.to_datetime(ts_str)
time_stamp.strftime(format)

import  pandas as pd
ts = '2023-03-15 19:20:30'
# 将时间改为pandas的时间戳格式
day = pd.to_datetime(ts)  # 或者pd.Timestamp(ts)
print(type(day))  # <class 'pandas._libs.tslibs.timestamps.Timestamp'>
print(str(day))  # 2023-03-15 19:20:30
day_pro = day.strftime("%Y-%m-%d")  # 2023-03-15

二、 datetime改变字符串时间格式:
p_datetime = datetime.strptime(ts_str, format)
ts = p_datetime.strftime(format) 或者 ts = datetime.strftime(p_datetime, format)

import os
from datetime import datetime, timedelta
# 转换日期的格式,必须先使用strptime转为对应格式的时间元组格式,再使用strftime转换时间格式
# 1、将字符串形式的时间解析为datetime形式,时间格式为该字符串的时间格式
time = '2023-02-26'
t = datetime.strptime(time, "%Y-%m-%d")  # datetime.datetime(2023, 2, 26, 0, 0), <class 'datetime.datetime'>
t_ = t - timedelta(days=1)  # 减去1天
# 2、将datetime形式转为字符串
t_str = t_.strftime(format)


# 处理文件修改时间
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改变字符串时间格式
struct_time = time.strptime(ts_str, format)
ts = time.strftime(format, p_tuple)

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))  # <class '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

四、 将时间戳转为时间格式

import time
now = time.time()  # 获取当前时间,时间戳
timeArray = time.localtime(now)  # time.struct_time(tm_year=2023, tm_mon=9, tm_mday=23, tm_hour=10, tm_min=30, tm_sec=52, tm_wday=2, tm_yday=298, tm_isdst=0)
str_time = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)  # 2023-9-23 10:15:52

import datetime
now = datetime.datetime.now()  # 获取当前时间,2023-9-23 10:15:53.766678
time_str= now.strftime("%Y-%m-%d %H:%M:%S")  # 2023-9-23 10:15:53

Python中日期格式如下:

	%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  当前时区的名称
	%%  表示%
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值