azure011328

导航

 

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QMessageBox
from datetime import datetime


class DateToWeekdayApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()

def initUI(self):
self.setWindowTitle('日期转星期几')

layout = QVBoxLayout()

self.label = QLabel('请输入日期 (YYYY-MM-DD):')
layout.addWidget(self.label)

self.entry = QLineEdit()
layout.addWidget(self.entry)

self.submit_button = QPushButton('提交')
self.submit_button.clicked.connect(self.on_submit)
layout.addWidget(self.submit_button)

self.result_label = QLabel('结果: ')
layout.addWidget(self.result_label)

self.setLayout(layout)

def on_submit(self):
date_str = self.entry.text()
try:
# 检查日期格式是否正确
date = datetime.strptime(date_str, "%Y-%m-%d")

# 检查日期是否在有效范围内(1900-01-01 到 2099-12-31)
if date.year < 1900 or date.year > 2099:
self.result_label.setText("结果: 无效日期(年份超出范围)")
return

# 检查月份是否有效(1 到 12)
if date.month < 1 or date.month > 12:
self.result_label.setText("结果: 无效日期(月份无效)")
return

# 检查日期是否符合月份的天数
if date.day < 1 or date.day > self.get_days_in_month(date.year, date.month):
self.result_label.setText("结果: 无效日期(日期无效)")
return

# 如果日期有效,显示星期几
self.result_label.setText(f"结果: {date.strftime('%A')}")
except ValueError:
self.result_label.setText("结果: 无效日期(格式错误)")

def get_days_in_month(self, year, month):
"""获取某年某月的天数"""
if month == 2: # 二月
if self.is_leap_year(year): # 闰年
return 29
else:
return 28
elif month in [4, 6, 9, 11]: # 4月、6月、9月、11月
return 30
else: # 其他月份
return 31

def is_leap_year(self, year):
"""判断是否为闰年"""
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
else:
return False


if __name__ == '__main__':
app = QApplication([])
window = DateToWeekdayApp()
window.show()
app.exec_()

posted on 2025-06-11 08:51  淮竹i  阅读(9)  评论(0)    收藏  举报