您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Python3中怎么对日期进行格式化
在Python编程中,处理日期和时间是常见需求。无论是日志记录、数据分析还是Web开发,都需要对日期进行格式化输出。Python3通过内置的`datetime`模块和第三方库提供了灵活的日期格式化功能。本文将详细介绍多种格式化方法及实际应用场景。
## 一、datetime模块基础
Python的`datetime`模块包含多个处理日期时间的类:
```python
from datetime import datetime, date, time
# 获取当前日期时间
now = datetime.now()
print("原始datetime对象:", now)
# 单独获取日期或时间
today = date.today()
current_time = time(14, 30)
strftime()
(string format time)是主要的格式化方法,它接受格式字符串作为参数:
代码 | 说明 | 示例 |
---|---|---|
%Y | 4位数年份 | 2023 |
%m | 补零月份(01-12) | 07 |
%d | 补零日期(01-31) | 05 |
%H | 24小时制小时 | 14 |
%M | 分钟 | 05 |
%S | 秒 | 09 |
%A | 完整星期名称 | Monday |
%a | 缩写星期 | Mon |
%B | 完整月份名称 | July |
%b | 缩写月份 | Jul |
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print("标准格式:", formatted) # 输出:2023-07-05 14:05:09
weekday_format = now.strftime("今天是%A, %Y年%b%d日")
print(weekday_format) # 输出:今天是Monday, 2023年Jul05日
import locale
# 设置中文环境
locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8')
print(now.strftime("%Y年%m月%d日 %A")) # 输出:2023年07月05日 星期一
注意:Windows系统可能需要使用'chinese'
替代'zh_CN.UTF-8'
from pytz import timezone
tz_shanghai = timezone('Asia/Shanghai')
localized_time = datetime.now(tz_shanghai)
print("上海时间:", localized_time.strftime("%Y-%m-%d %H:%M %Z"))
def human_readable(dt):
diff = datetime.now() - dt
if diff.days == 0:
return "今天" + dt.strftime("%H:%M")
elif diff.days == 1:
return "昨天" + dt.strftime("%H:%M")
else:
return dt.strftime("%m月%d日 %H:%M")
print(human_readable(datetime(2023,7,3,14,30)))
month_names = [
"一月", "二月", "三月", "四月", "五月", "六月",
"七月", "八月", "九月", "十月", "十一月", "十二月"
]
custom_format = f"{now.year}年{month_names[now.month-1]}{now.day}日"
print(custom_format)
import arrow
# 更人性化的API
fmt_time = arrow.get(now).format("YYYY-MM-DD HH:mm:ss")
print("Arrow格式:", fmt_time)
# 人性化输出
print(arrow.get(now).humanize(locale='zh')) # 输出:"几秒前"
import pendulum
dt = pendulum.now('Asia/Tokyo')
print(dt.format("dddd, MMMM Do YYYY [at] hh:mm A", locale='ja'))
# 输出:水曜日, 7月5日 2023 at 02:30 午後
log_filename = f"app_{datetime.now().strftime('%Y%m%d_%H%M')}.log"
print("日志文件:", log_filename) # 输出:app_20230705_1430.log
# SQLite示例
import sqlite3
conn = sqlite3.connect(":memory:")
conn.execute("CREATE TABLE events (id INTEGER PRIMARY KEY, event_time TEXT)")
# 使用ISO格式存储
iso_time = datetime.now().isoformat()
conn.execute("INSERT INTO events (event_time) VALUES (?)", (iso_time,))
# Flask示例
from flask import Flask, request
app = Flask(__name__)
@app.route('/event', methods=['POST'])
def add_event():
event_date = datetime.strptime(
request.form['date'],
'%d/%m/%Y'
)
return f"已添加{event_date.strftime('%Y年%m月%d日')}的事件"
locale.setlocale()
会影响整个进程
from time import strftime
fast_format = strftime.__get__("%Y-%m-%d")
try-except
处理无效格式Python3提供了从简单到复杂的多种日期格式化方案。对于基本需求,strftime()
配合格式代码即可满足;复杂场景可借助Arrow、Pendulum等第三方库。根据项目需求选择合适的方法,并注意时区和本地化问题,可以高效地处理各种日期格式化需求。
“`
这篇文章约1200字,涵盖了: 1. 基础格式化方法 2. 本地化处理方案 3. 高级技巧和第三方库 4. 实际应用示例 5. 注意事项 采用Markdown格式,包含代码块、表格等元素,可直接用于技术文档或博客发布。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。