本文目录导读:

在Python中,格式化日期时间主要使用datetime模块中的strftime()和strptime()方法,以下是常用的格式化方式:
基本格式化方法
当前时间格式化
from datetime import datetime
# 获取当前时间
now = datetime.now()
# 格式化为字符串
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted) # 输出:2024-01-15 14:30:45
formatted_date = now.strftime("%Y/%m/%d")
print(formatted_date) # 输出:2024/01/15
formatted_time = now.strftime("%H:%M:%S")
print(formatted_time) # 输出:14:30:45
字符串转日期时间
# 将字符串解析为datetime对象 date_str = "2024-01-15 14:30:45" date_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") print(date_obj) # 输出:2024-01-15 14:30:45
常用格式化符号
from datetime import datetime
now = datetime.now()
# 年-月-日
print(now.strftime("%Y-%m-%d")) # 2024-01-15
print(now.strftime("%y-%m-%d")) # 24-01-15
# 时:分:秒
print(now.strftime("%H:%M:%S")) # 14:30:45
print(now.strftime("%I:%M:%S %p")) # 02:30:45 PM (12小时制)
# 星期和月份
print(now.strftime("%A")) # Monday (完整星期)
print(now.strftime("%a")) # Mon (缩写星期)
print(now.strftime("%B")) # January (完整月份)
print(now.strftime("%b")) # Jan (缩写月份)
# 完整日期
print(now.strftime("%c")) # Mon Jan 15 14:30:45 2024
完整格式化符号表
| 符号 | 说明 | 示例 |
|---|---|---|
%Y |
4位年份 | 2024 |
%y |
2位年份 | 24 |
%m |
月份(01-12) | 01 |
%d |
日期(01-31) | 15 |
%H |
24小时制小时(00-23) | 14 |
%I |
12小时制小时(01-12) | 02 |
%M |
分钟(00-59) | 30 |
%S |
秒(00-59) | 45 |
%p |
AM/PM | PM |
%A |
完整星期名称 | Monday |
%a |
缩写星期名称 | Mon |
%B |
完整月份名称 | January |
%b |
缩写月份名称 | Jan |
%j |
一年中的第几天(001-366) | 015 |
%w |
星期(0-6,0为周日) | 1 |
%U |
一年中的第几周(周日为第一天) | 02 |
%W |
一年中的第几周(周一为第一天) | 03 |
实际应用案例
日志时间格式化
from datetime import datetime
# 日志格式
log_time = datetime.now().strftime("[%Y-%m-%d %H:%M:%S]")
log_message = f"{log_time} User logged in"
print(log_message)
# 输出:[2024-01-15 14:30:45] User logged in
文件名时间戳
# 文件命名
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"report_{timestamp}.txt"
print(filename) # 输出:report_20240115_143045.txt
数据库日期处理
# 格式化日期用于数据库存储
date_input = "2024-01-15"
db_format = datetime.strptime(date_input, "%Y-%m-%d").date()
print(db_format) # 输出:2024-01-15
# 数据库日期转显示格式
db_date = datetime(2024, 1, 15)
display_format = db_date.strftime("%B %d, %Y")
print(display_format) # 输出:January 15, 2024
时区相关格式化
from datetime import datetime, timezone, timedelta
# UTC时间
utc_now = datetime.now(timezone.utc)
print(utc_now.strftime("%Y-%m-%d %H:%M:%S %Z"))
# 输出:2024-01-15 06:30:45 UTC
# 指定时区
beijing = timezone(timedelta(hours=8))
bj_time = datetime.now(beijing)
print(bj_time.strftime("%Y-%m-%d %H:%M:%S %Z"))
# 输出:2024-01-15 14:30:45 UTC+08:00
实用的格式化函数封装
from datetime import datetime
def format_datetime(dt=None, format_str="%Y-%m-%d %H:%M:%S"):
"""日期时间格式化函数"""
if dt is None:
dt = datetime.now()
return dt.strftime(format_str)
def parse_datetime(date_str, format_str="%Y-%m-%d %H:%M:%S"):
"""字符串转日期时间"""
return datetime.strptime(date_str, format_str)
# 使用示例
print(format_datetime()) # 默认格式
print(format_datetime(format_str="%Y年%m月%d日")) # 中文格式
parsed = parse_datetime("2024-01-15")
print(parsed) # datetime对象
这些就是Python中日期时间格式化的常用方法,根据实际需求选择合适的格式化字符串即可。