从当前日期获取星期几并指定星期几

Posted

技术标签:

【中文标题】从当前日期获取星期几并指定星期几【英文标题】:Get day of week from current date and specifying first day of week 【发布时间】:2017-11-07 10:23:25 【问题描述】:

我正在将旧版 VB6 项目迁移到 C#。

我想从下面的表达式中获取 C# 中的等价物:

Weekday(Date, vbMonday)

我知道 C# 中有一个函数:

int dayOfWeek = (int)DateTime.Today.DayOfWeek;

但是如何指定一周的第一天是星期一,然后函数 DayOfWeek 将其考虑在内并返回正确的值?

我需要获取一个 int 值。

【问题讨论】:

目前还不清楚您的目标是什么。 DayOfWeek 属性返回一个 DayOfWeek 枚举值 - 这不受一周的第一天的影响。您希望获得什么价值? 【参考方案1】:

您可以致电CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek 获得一周的第一天,但​​我认为您可以不这样做。

Weekday 函数返回 1 表示星期一,就像 DayOfWeek。唯一的特殊情况是星期日,.NET 返回 0,而 VB 返回 7。

算一算吧:

int dayOfWeek = DateTime.Today.DayOfWeek == DayOfWeek.Sunday
                 ? 7
                 : (int)DateTime.Today.DayOfWeek;

【讨论】:

你确定吗?来自 msdn 文档:vb6 中的 msdn.microsoft.com/en-us/library/82yfs2zh(v=vs.90).aspx sunday 为 1,如果您未在 WeekDay 函数中指定一周的第一天作为参数,则默认情况下一周的第一天为星期日。在我的示例中,您通过在 WeekDay 函数中通过参数指定一周的第一天为星期一,所以星期一是 1,星期二是 2,星期日是 7,这就是我的理解。 是的,但是您将其设置为 Monday = 1,这就是为什么它是 1(因此您偏离了文档)。 好的,因为在.NET中你没有指定一周的第一天,它默认设置为星期日,所以星期日是0,星期一是1,星期二2,...,星期六6. 枚举是。我不使用文化中实际的一周的第一天,因为你不需要它来做数学。 在 vb6 中,使用 WeekDay(Date,vbMonday),如果星期一被指定为一周的第一天,为什么星期一得到 1 而不是 0?【参考方案2】:
DateTime dateValue = new DateTime(2008, 6, 11);



Console.WriteLine((int) dateValue.DayOfWeek);

// 该示例显示以下输出: // 3

Console.WriteLine(dateValue.ToString("dddd"));

// 该示例显示以下输出: // 星期三

Console.WriteLine(dateValue.ToString("dddd"));

// 该示例显示以下输出: // 星期三

【讨论】:

以上是关于从当前日期获取星期几并指定星期几的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL 优化:获取数据 w.r.t 星期几

js显示当前日期时间和星期几

用js在网页上显示当前日期和时间,并显示是星期几

js获取当前月的1号是星期几

日期间隔,当前是星期几

ASP.NET根据当前的周跟星期去判断当前的日期