吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 294|回复: 9
收起左侧

[经验求助] 日期类程序

[复制链接]
SJJ87257 发表于 2024-8-8 14:15
201吾爱币
     需要快速了解某天是星期几该怎么做?
我的想法先了解这个月有多少天,再求出这个月的第一天是星期几,再推导出想知道的那一天是星期几和其它信息该如何实现?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| SJJ87257 发表于 2024-8-8 14:16
在不借助手机日历的情况下,快速了解某一天,是在某一年的周几
MoMo21 发表于 2024-8-8 14:51
要实现这个功能,可以按照以下步骤进行:

    获取指定月份的天数。
    确定这个月的第一天是星期几。
    计算并推导出指定日期是星期几。

可以使用calendar模块来实现这些功能。以下是一个详细的示例代码:
[Python] 纯文本查看 复制代码
import calendar
from datetime import datetime, timedelta

def get_days_in_month(year, month):
    _, days_in_month = calendar.monthrange(year, month)
    return days_in_month

def get_first_weekday(year, month):
    first_day_weekday, _ = calendar.monthrange(year, month)
    # 将数字转换为对应的星期
    weekdays = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    return weekdays[first_day_weekday]

def get_weekday(year, month, day):
    date = datetime(year, month, day)
    # 获取星期几,0表示星期一,6表示星期日
    weekday = date.weekday()
    # 将数字转换为对应的星期
    weekdays = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    return weekdays[weekday]

def get_month_info(year, month, day):
    days_in_month = get_days_in_month(year, month)
    first_day_weekday = get_first_weekday(year, month)
    specified_day_weekday = get_weekday(year, month, day)
    
    return {
        'days_in_month': days_in_month,
        'first_day_weekday': first_day_weekday,
        'specified_day_weekday': specified_day_weekday
    }

# 示例:获取2024年8月的信息和8日是星期几
year = 2024
month = 8
day = 8

month_info = get_month_info(year, month, day)
print(f"{year}年{month}月共有{month_info['days_in_month']}天")
print(f"{year}年{month}月的第一天是{month_info['first_day_weekday']}")
print(f"{year}年{month}月{day}日是{month_info['specified_day_weekday']}")

这个代码做了以下几件事:
  • 使用calendar.monthrange获取指定月份的天数和第一天是星期几。
  • 使用datetime模块获取指定日期是星期几。
  • 定义了一个get_month_info函数,它返回一个包含指定月份天数、第一天是星期几和指定日期是星期几的字典。

运行这个代码,会输出:
yaml2024年8月共有31天
2024年8月的第一天是星期四
2024年8月8日是星期四
你可以根据需要更改year、month和day的值,以获取其他月份和日期的信息。
cjy317 发表于 2024-8-8 14:54
网上随便找个gpt都可以写出来的,下面这个用python写的,你参考看看
先安装这个 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  flask
[Python] 纯文本查看 复制代码
from flask import Flask, request, render_template_string
from datetime import datetime

app = Flask(__name__)

def get_chinese_day_of_week(day):
    days = {
        'Monday': '星期一',
        'Tuesday': '星期二',
        'Wednesday': '星期三',
        'Thursday': '星期四',
        'Friday': '星期五',
        'Saturday': '星期六',
        'Sunday': '星期日'
    }
    return days.get(day, '未知')

@app.route('/', methods=['GET', 'POST'])
def index():
    day_of_week = None
    if request.method == 'POST':
        date_str = request.form['date']
        try:
            date_obj = datetime.strptime(date_str, '%Y-%m-%d')
            day_of_week = get_chinese_day_of_week(date_obj.strftime('%A'))
        except ValueError:
            day_of_week = "无效的日期格式,请使用 YYYY-MM-DD"

    # 使用简单的HTML模板
    template = '''
    <html>
        <body>
            <form method="post">
                输入日期 (YYYY-MM-DD): <input type="date" name="date" />
                <input type="submit" value="查询" />
            </form>
            {% if day_of_week %}
                <p>这天是: {{ day_of_week }}</p>
            {% endif %}
        </body>
    </html>
    '''

    return render_template_string(template, day_of_week=day_of_week)

if __name__ == '__main__':
    app.run(debug=True)


然后在命令行或者cmd里输入这个运行哦
python app.py
shuisanyue 发表于 2024-8-8 14:58
这个问题挺有意思啊
如果python写一小段代码:


[Python] 纯文本查看 复制代码
from datetime import datetime, timedelta

def find_days_of_week(start_year, start_month, start_day, days):
    start_date = datetime(start_year, start_month, start_day)
    days_of_week = []
    # [color=#ffffff][backcolor=rgb(45, 101, 247)][font=-apple-system, blinkmacsystemfont, &quot]自动从今天算起,显示出未来1000天每天都是星期几?[/font][/backcolor][/color]
    for i in range(days):
        current_date = start_date + timedelta(days=i)
        day_of_week = current_date.strftime('%A')  # 获取星期几的英文全称
        days_of_week.append((current_date.strftime('%Y-%m-%d'), day_of_week))
    return days_of_week
today = datetime.now()
days_of_week_future_1000 = find_days_of_week(today.year, today.month, today.day, 1000)
for date, day_of_week in days_of_week_future_1000:
    print(f"{date} 是星期{day_of_week}")


结果:
Python 3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)] on win32
runfile('D:/py001/xqji001.py', wdir='D:/py001')
2024-08-08 是星期Thursday
2024-08-09 是星期Friday
2024-08-10 是星期Saturday
2024-08-11 是星期Sunday
2024-08-12 是星期Monday
2024-08-13 是星期Tuesday
2024-08-14 是星期Wednesday
2024-08-15 是星期Thursday
2024-08-16 是星期Friday
2024-08-17 是星期Saturday
2024-08-18 是星期Sunday
2024-08-19 是星期Monday
2024-08-20 是星期Tuesday
2024-08-21 是星期Wednesday
2024-08-22 是星期Thursday
2024-08-23 是星期Friday
2024-08-24 是星期Saturday
2024-08-25 是星期Sunday
2024-08-26 是星期Monday
2024-08-27 是星期Tuesday
2024-08-28 是星期Wednesday
2024-08-29 是星期Thursday
2024-08-30 是星期Friday
2024-08-31 是星期Saturday
2024-09-01 是星期Sunday
……
……

但怎么样快呢?没有手机没有电脑么有电……哈哈
1、纸日历(未来1w天的纸的):虽然不是最快方法,但如果你手头有纸质日历,可以直接查看。
2、使用各种编程语言中的日期时间库是快速得到结果的方法之一。
3、在线日历转换工具许多网站提供日期到星期的转换服务你只需要输入日期就会告诉你那天是星期几。
4、物理计算器有电池就工作没有交流电也能工作(关键是工作时间比较长):一些高级计算器具有日期和时间功能可以用来确定星期几。
5、手机、电脑不用说了吧。
XiaoHai101 发表于 2024-8-8 15:03
通过使用 `calendar` 和 `datetime` 模块,可以快速计算出任意一天是星期几,并了解其他相关信息。以下是一个python代码:

```
import calendar
from datetime import datetime

def get_day_info(year, month, day):
    # 获取这个月有多少天
    month_days = calendar.monthrange(year, month)[1]
   
    # 获取这个月的第一天是星期几(0是星期一,6是星期日)
    first_day_of_month = calendar.monthrange(year, month)[0]
   
    # 获取指定日期是星期几(0是星期一,6是星期日)
    day_of_week = datetime(year, month, day).weekday()
   
    # 显示星期几的字符串表示
    day_names = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
    day_of_week_str = day_names[day_of_week]
   
    return {
        "total_days_in_month": month_days,
        "first_day_of_month_weekday": first_day_of_month,
        "day_of_week": day_of_week,
        "day_of_week_str": day_of_week_str
    }

year = 2024
month = 8
day = 8

day_info = get_day_info(year, month, day)
print(f"{year}年{month}月有{day_info['total_days_in_month']}天")
print(f"{year}年{month}月的第一天是星期{day_info['first_day_of_month_weekday'] + 1}")
print(f"{year}年{month}月{day}日是{day_info['day_of_week_str']}")

```

这个程序会输出类似以下结果:

```
2024年8月有31天
2024年8月的第一天是星期四
2024年8月8日是星期四
```

这里是程序如何工作的详细解释:

1. 使用 `calendar.monthrange(year, month)` 获取指定月份的总天数和该月第一天是星期几。`monthrange` 返回一个元组,包含两个值,第一个是该月第一天的星期几(0是星期一,6是星期日),第二个是该月的天数。

2. 使用 `datetime(year, month, day).weekday()` 获取指定日期是星期几。`weekday` 方法返回一个整数,表示星期几(0是星期一,6是星期日)。

3. 将星期几的整数值映射到中文表示的星期几字符串。

通过这个方法,你可以快速了解任意一天是星期几,并获取该月的天数和第一天是星期几的信息。
BaobaoBusnie 发表于 2024-8-8 15:10
本帖最后由 BaobaoBusnie 于 2024-8-8 15:12 编辑

看了一下,你也是学过编程的,起码学了6年了,为什么连提问题都不能很清晰呢?1.你是要用什么语言写这个程序?不同语言代码不同
2.写这个程序要用到已经有的库嘛?用前人的库跟自己写也是不一样的(不要重复造轮子)
3.如果自己设计算法,那我可以给你提供一个思路:
蔡勒公式(计算星期的公式)


你之前学过C语言,那么C语言代码例子:
[C] 纯文本查看 复制代码
#include<stdio.h>
int main()
{
 int year, month, day;
 while (scanf("%d %d %d", &year, &month, &day) != EOF)
 {
  if (month == 1 || month == 2)//判断month是否为1或2 
   year--, month += 12;
  int c = year / 100;
  int y = year - c * 100;
  int week = y + y / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1;
  while (week < 0)
   week += 7;
  week %= 7;
  switch (week)
  {
  case 1:printf("Monday\n"); break;
  case 2:printf("Tuesday\n"); break;
  case 3:printf("Wednesday\n"); break;
  case 4:printf("Thursday\n"); break;
  case 5:printf("Friday\n"); break;
  case 6:printf("Saturday\n"); break;
  case 0:printf("Sunday\n"); break;
  }
 }
 return 0;
}
cjy317 发表于 2024-8-8 15:12
https://www.123pan.com/s/AYrxjv-1wrKd.html?提取码:Op8k

这个exe的程序直接可以查询呢,输入日期:例如:2025-01-01,回车运行即可查询
rainisa 发表于 2024-8-8 15:25
JS就有Date.getDay()方法获取某个日期是周几,不过返回的是数字0-6,0是周日。
如果想要中文,可以给Date对象添加一个原型方法即可。
[JavaScript] 纯文本查看 复制代码
Date.prototype.getWeekDay = function() {
  const weekDays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
  return weekDays[this.getDay()];
};
wkfy 发表于 2024-8-8 16:19
一般这种东西,各种语言都自带函数可以实现。如果要笨办法,找个参照日期,取时间间隔整除7
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 12:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表