一、基础格式化
Python中常用的日期格式化字符串如下:
%Y 年份,4位数字 %m 月份,1-12 %d 日期,1-31 %H 小时,24小时制,0-23 %M 分钟,0-59 %S 秒数,0-59
如要将日期格式化为字符串:
import datetime today = datetime.datetime.today() formatted = today.strftime('%Y-%m-%d %H:%M:%S') print(formatted)
输出:2022-07-12 17:26:40
使用datetime.datetime.strptime()方法将字符串转为datetime对象:
datetime_str = '2022-07-12 17:26:40' datetime_obj = datetime.datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S') print(datetime_obj)
输出:2022-07-12 17:26:40
二、日期加减
使用datetime.timedelta()函数可以对日期加减。
import datetime today = datetime.datetime.today() delta = datetime.timedelta(days=3) new_date = today + delta formatted = new_date.strftime('%Y-%m-%d %H:%M:%S') print(formatted)
输出:2022-07-15 17:26:40
三、本地化
Python中有个locale模块,可以用于本地化日期。
import datetime import locale today = datetime.datetime.today() locale.setlocale(locale.LC_ALL, 'en_US') formatted = today.strftime('%A, %B %d, %Y') print(formatted)
输出:Tuesday, July 12, 2022
四、时区
使用pytz模块可以对日期进行时区转换。
import datetime import pytz today = datetime.datetime.now(tz=pytz.UTC) pst_tz = pytz.timezone('America/Los_Angeles') pst_time = today.astimezone(pst_tz) formatted = pst_time.strftime('%Y-%m-%d %H:%M:%S %Z%z') print(formatted)
输出:2022-07-12 10:26:40 PDT-0700
五、时间戳
使用time模块的time()函数可以获取当前时间戳,使用datetime.datetime.fromtimestamp()函数可以将时间戳转换为datetime对象。
import datetime import time timestamp = time.time() datetime_obj = datetime.datetime.fromtimestamp(timestamp) formatted = datetime_obj.strftime('%Y-%m-%d %H:%M:%S') print(formatted)
输出:2022-07-12 17:26:40
六、strftime格式化字符列表
%a | 星期几的简写 | Wed |
%A | 星期几的全称 | Wednesday |
%b | 月份的简写 | Jan |
%B | 月份的全称 | January |
%c | 本地日期时间表示 | Mon Jul 12 17:26:40 2022 |
%d | 月份中的日期(01-31) | 31 |
%H | 24小时制小时数(00-23) | 23 |
%I | 12小时制小时数(01-12) | 11 |
%j | 一年中的第几天(001-366) | 365 |
%m | 月份数字(01-12) | 12 |
%M | 分钟数(00-59) | 59 |
%p | AM/PM | PM |
%S | 秒数(00-61) | 59 |
%U | 一年中的第几周(00-53),星期日为一周的第一天 | 52 |
%w | 一周中的第几天,星期日为0 | 0 |
%W | 一年中的第几周(00-53),星期一为一周的第一天 | 52 |
%x | 本地日期表示 | 07/12/22 |
%X | 本地时间表示 | 17:26:40 |
%y | 2位数字的年份 | 22 |
%Y | 4位数字的年份 | 2022 |
%z | UTC偏移量 | +0800 |
%Z | 时区 | CST |