吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 736|回复: 47
收起左侧

[求助] C# 请教 计算日期出错

[复制链接]
XXTK 发表于 2024-4-28 20:40
本帖最后由 XXTK 于 2024-4-28 21:02 编辑

DateTime dt = DateTime.Now;  //当前时间
DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));  //本周周一

今天是4.28星期天.这个星期的星期一应该是4.22。但计算的结果却成了4.29,好像代码也没有问题
5.PNG

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

jyjjf 发表于 2024-4-28 20:50
你调试加点代码看看是year是几几年?
 楼主| XXTK 发表于 2024-4-28 20:58
wkfy 发表于 2024-4-28 21:04
有没有可能老外的周一实际是一周的第二天呢?例如周日才是一周的第一天。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
XXTK + 1 + 1 我很赞同!

查看全部评分

jyjjf 发表于 2024-4-28 21:10
wkfy 发表于 2024-4-28 21:04
有没有可能老外的周一实际是一周的第二天呢?例如周日才是一周的第一天。

应该是这个导致的
 楼主| XXTK 发表于 2024-4-28 21:10
wkfy 发表于 2024-4-28 21:04
有没有可能老外的周一实际是一周的第二天呢?例如周日才是一周的第一天。

没有深研过毕竟业余爱好
jyjjf 发表于 2024-4-28 21:20
XXTK 发表于 2024-4-28 21:10
没有深研过毕竟业余爱好

gpt的代码示例:
using System;

class Program
{
    static void Main()
    {
        DateTime currentDate = DateTime.Now;
        DayOfWeek dayOfWeek = GetDayOfWeek(currentDate);
        string dayOfWeekString = GetDayOfWeekString(dayOfWeek);

        Console.WriteLine($"Today is {dayOfWeekString}.");
    }

    static DayOfWeek GetDayOfWeek(DateTime date)
    {
        // 获取星期几的值,其中 Sunday = 0,Monday = 1,以此类推
        int dayOfWeekValue = (int)date.DayOfWeek;

        // 将星期日的值调整为 7,以便与假设星期一是第一天的情况相匹配
        if (dayOfWeekValue == 0)
            dayOfWeekValue = 7;

        return (DayOfWeek)dayOfWeekValue;
    }

    static string GetDayOfWeekString(DayOfWeek dayOfWeek)
    {
        switch (dayOfWeek)
        {
            case DayOfWeek.Monday:
                return "Monday";
            case DayOfWeek.Tuesday:
                return "Tuesday";
            case DayOfWeek.Wednesday:
                return "Wednesday";
            case DayOfWeek.Thursday:
                return "Thursday";
            case DayOfWeek.Friday:
                return "Friday";
            case DayOfWeek.Saturday:
                return "Saturday";
            case DayOfWeek.Sunday:
                return "Sunday";
            default:
                throw new ArgumentException("Invalid day of week.");
        }
    }
}
 楼主| XXTK 发表于 2024-4-28 21:21
jyjjf 发表于 2024-4-28 21:10
应该是这个导致的

但逻辑上说不过去老外的28号也应该是星期天,它是以4.28这个日期进行计算的
jyjjf 发表于 2024-4-28 21:24
XXTK 发表于 2024-4-28 21:21
但逻辑上说不过去老外的28号也应该是星期天,它是以4.28这个日期进行计算的

excel的weekday函数就有星期几是第一天的类型参数设置

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
XXTK + 1 + 1 我很赞同!不是很懂研究一下你的代码

查看全部评分

skypaladin 发表于 2024-4-28 23:07
[C#] 纯文本查看 复制代码
static void Main(string[] args)
{
    //DateTime dt = DateTime.Now;  //当前时间
    //DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));  //本周周一
    //今天是4.28星期天.这个星期的星期一应该是4.22。但计算的结果却成了4.29,好像代码也没有问题
    
    DateTime today = DateTime.Today;
    int dayOfWeek = today.DayOfWeek - DayOfWeek.Sunday;
    DateTime lastMondayDate = today.AddDays(dayOfWeek == 0 ? -6 : -1);
    Console.WriteLine(lastMondayDate.Date);
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
XXTK + 1 + 1 热心回复!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

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

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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