文章目录
- 方法 说明 示例 构造函数 通过年、月、日创建 QDate(year, month, day) fromString(date_str, format) 解析字符串为日期 QDate.fromString("2023-10-01", "yyyy-MM-dd") currentDate() 获取当前日期(静态方法) QDate.currentDate() from PyQt5.QtCore import QDate # 创建日期对象 date1 = QDate(2023, 10, 1) # 2023年10月1日 date2 = QDate.fromString(“2023/12/31”, “yyyy/MM/dd”) # 从字符串解析 today = QDate.currentDate() # 当前日期
- 方法 说明 示例 year() 返回年份 date1.year() → 2023 month() 返回月份(1~12) date1.month() → 10 day() 返回天数(1~31) date1.day() → 1 dayOfWeek() 返回星期几(1=周一,7=周日) date1.dayOfWeek() → 7 daysInMonth() 返回当月总天数 date1.daysInMonth() → 31 print(f”{today.toString(‘yyyy-MM-dd’)} 是星期{today.dayOfWeek()}”) # 输出:2023-10-05 是星期4(星期四)
- 方法 说明 示例 addDays(days) 增加指定天数 today.addDays(7) → 一周后 addMonths(months) 增加指定月数 date1.addMonths(2) → 2023-12-01 addYears(years) 增加指定年数 date1.addYears(1) → 2024-10-01 daysTo(date) 计算两日期相差天数 date1.daysTo(date2) → 91 operator (<, >, ==) 比较日期先后 date1 < date2 → True # 计算未来日期 future_date = today.addMonths(3) # 3个月后的日期 # 计算日期差 days_remaining = today.daysTo(QDate(2023, 12, 31)) # 距离年底的天数
- 方法 说明 示例 toString(format) 按格式转换为字符串 date1.toString("yyyy年M月d日") → "2023年10月1日" toPyDate() 转为 Python datetime.date 对象 datetime_date = date1.toPyDate() 常用格式符: yyyy:4位年份(如 2023) MM:两位月份(01~12) dd:两位天数(01~31) ddd:本地化星期缩写(如 "周一") dddd:本地化星期全称(如 "星期一") print(date1.toString(“yyyy-MM-dd”)) # 2023-10-01 print(date1.toString(“dd/MM/yyyy”)) # 01/10/2023 print(date1.toString(“MMMM d, yyyy”)) # October 1, 2023(需本地化支持)
- 方法 说明 示例 isValid() 检查日期是否合法 QDate(2023, 2, 30).isValid() → False isNull() 检查日期是否为空(默认构造) QDate().isNull() → True # 验证用户输入日期 user_input = QDate(2023, 13, 1) # 无效月份 if user_input.isValid(): print(“日期有效”) else: print(“日期无效”)
目录
- 核心功能
- 常用方法及代码示例
- 1. 创建日期对象
- 2. 获取日期信息
- 3. 日期计算与比较
- 4. 日期格式化与转换
- 5. 日期有效性验证
- 完整示例:日期计算器
- 注意事项
QDate 是 PyQt5 中处理 日期 的核心类,用于表示公历日期(年、月、日),支持日期计算、格式化和有效性验证。适用于 GUI 开发中的日期输入、数据过滤、日程管理等功能。
- 日期创建:支持年、月、日或字符串解析初始化。
- 日期计算:加减天数/月数/年数,获取日期差。
- 格式化输出:转换为字符串(支持本地化格式)。
- 有效性检查:自动验证日期合法性(如闰年、月份范围)。
- 静态方法:快速获取当前日期或特定日期。
| 方法 | 说明 | 示例 |
|---|---|---|
| 构造函数 | 通过年、月、日创建 | QDate(year, month, day) |
| fromString(date_str, format) | 解析字符串为日期 | QDate.fromString("2023-10-01", "yyyy-MM-dd") |
| currentDate() | 获取当前日期(静态方法) | QDate.currentDate() |
from PyQt5.QtCore import QDate
# 创建日期对象
date1 = QDate(2023, 10, 1) # 2023年10月1日
date2 = QDate.fromString("2023/12/31", "yyyy/MM/dd") # 从字符串解析
today = QDate.currentDate() # 当前日期
| 方法 | 说明 | 示例 |
|---|---|---|
| year() | 返回年份 | date1.year() → 2023 |
| month() | 返回月份(1~12) | date1.month() → 10 |
| day() | 返回天数(1~31) | date1.day() → 1 |
| dayOfWeek() | 返回星期几(1=周一,7=周日) | date1.dayOfWeek() → 7 |
| daysInMonth() | 返回当月总天数 | date1.daysInMonth() → 31 |
print(f"{today.toString('yyyy-MM-dd')} 是星期{today.dayOfWeek()}")
# 输出:2023-10-05 是星期4(星期四)
| 方法 | 说明 | 示例 |
|---|---|---|
| addDays(days) | 增加指定天数 | today.addDays(7) → 一周后 |
| addMonths(months) | 增加指定月数 | date1.addMonths(2) → 2023-12-01 |
| addYears(years) | 增加指定年数 | date1.addYears(1) → 2024-10-01 |
| daysTo(date) | 计算两日期相差天数 | date1.daysTo(date2) → 91 |
| operator (<, >, ==) | 比较日期先后 | date1 < date2 → True |
# 计算未来日期 future_date = today.addMonths(3) # 3个月后的日期 # 计算日期差 days_remaining = today.daysTo(QDate(2023, 12, 31)) # 距离年底的天数
| 方法 | 说明 | 示例 |
|---|---|---|
| toString(format) | 按格式转换为字符串 | date1.toString("yyyy年M月d日") → "2023年10月1日" |
| toPyDate() | 转为 Python datetime.date 对象 | datetime_date = date1.toPyDate() |
常用格式符:
yyyy:4位年份(如 2023)MM:两位月份(01~12)dd:两位天数(01~31)ddd:本地化星期缩写(如 "周一")dddd:本地化星期全称(如 "星期一")
print(date1.toString("yyyy-MM-dd")) # 2023-10-01
print(date1.toString("dd/MM/yyyy")) # 01/10/2023
print(date1.toString("MMMM d, yyyy")) # October 1, 2023(需本地化支持)
| 方法 | 说明 | 示例 |
|---|---|---|
| isValid() | 检查日期是否合法 | QDate(2023, 2, 30).isValid() → False |
| isNull() | 检查日期是否为空(默认构造) | QDate().isNull() → True |
# 验证用户输入日期
user_input = QDate(2023, 13, 1) # 无效月份
if user_input.isValid():
print("日期有效")
else:
print("日期无效")
from PyQt5.QtCore import QDate
def date_calculator():
today = QDate.currentDate()
print(f"当前日期: {today.toString('yyyy-MM-dd')}")
# 计算30天后的日期
future_date = today.addDays(30)
print(f"30天后: {future_date.toString('yyyy-MM-dd')}")
# 计算两个日期相差天数
deadline = QDate(2023, 12, 31)
days_left = today.daysTo(deadline)
print(f"距离年底还有 {days_left} 天")
# 验证日期
test_date = QDate(2024, 2, 29) # 2024是闰年
print(f"2024-02-29 是否有效? {test_date.isValid()}") # True
date_calculator()
-
月份和天数的范围:
- 月份范围:1~12
- 天数范围:根据月份自动验证(如4月不能超过30天)。
-
与 Python datetime 的交互:
- 使用
toPyDate() 转换为 datetime.date 对象,以便与其他库交互。
- 从
datetime.date 转换:
import datetime
py_date = datetime.date(2023, 10, 1)
qt_date = QDate(py_date.year, py_date.month, py_date.day)
-
本地化格式:
- 格式化输出会根据系统语言自动适配(如中文环境显示“2023年10月1日”)。
月份和天数的范围:
- 月份范围:1~12
- 天数范围:根据月份自动验证(如4月不能超过30天)。
与 Python datetime 的交互:
- 使用
toPyDate()转换为datetime.date对象,以便与其他库交互。 - 从
datetime.date转换:import datetime py_date = datetime.date(2023, 10, 1) qt_date = QDate(py_date.year, py_date.month, py_date.day)
本地化格式:
- 格式化输出会根据系统语言自动适配(如中文环境显示“2023年10月1日”)。
通过 QDate,可高效处理日期逻辑,结合 QDateEdit 控件可构建用户友好的日期输入界面!
到此这篇关于PyQt5 QDate类的具体使用的文章就介绍到这了,更多相关PyQt5 QDate类内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- PyQt5-QDateEdit的简单使用操作
- python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例