126

如何以整数格式获取星期几?我知道 ToString 只会返回一个字符串。

DateTime ClockInfoFromSystem = DateTime.Now;
int day1;
string day2;
day1= ClockInfoFromSystem.DayOfWeek.ToString(); /// it is not working
day2= ClockInfoFromSystem.DayOfWeek.ToString(); /// it gives me string
4

10 回答 10

195

利用

day1 = (int)ClockInfoFromSystem.DayOfWeek;
于 2012-02-08T18:17:16.783 回答
98
int day = (int)DateTime.Now.DayOfWeek;

一周的第一天:星期日(值为零)

于 2012-02-08T20:42:27.850 回答
75

如果要将一周的第一天设置为整数值为 1 的星期一和整数值为 7 的星期日

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
于 2013-12-30T02:49:06.160 回答
6
day1= (int)ClockInfoFromSystem.DayOfWeek;
于 2012-02-08T18:17:50.417 回答
5

尝试这个。它会工作得很好:

int week = Convert.ToInt32(currentDateTime.DayOfWeek);
于 2014-09-25T10:25:23.220 回答
5

另一种获取整数值为 1 的星期一和整数值为 7 的星期日的方法

整数天 = ((int)DateTime.Now.DayOfWeek + 6) % 7 + 1;
于 2018-02-04T00:44:06.637 回答
4

将 DayOfWeek 等 Enum 的整数值作为字符串获取的正确方法是:

DayOfWeek.ToString("d")
于 2014-12-24T09:41:32.170 回答
2

正确答案,确实是得到 int 值的正确答案。

但是,如果您只是检查以确保它是星期天......请考虑使用以下代码,而不是强制转换为 int。这提供了更多的可读性。

if (yourDateTimeObject.DayOfWeek == DayOfWeek.Sunday)
{
    // You can easily see you're checking for sunday, and not just "0"
}
于 2020-08-19T17:02:09.347 回答
0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
于 2014-03-11T21:26:35.283 回答
0

可读性很重要。

如果你需要一个整数:

int day1 = (int)ClockInfoFromSystem.DayOfWeek;

如果您需要工作日整数的字符串:

string daystr = $"{(int)ClockInfoFromSystem.DayOfWeek}"; // Unambiguous string of int.

不要使用推荐的 ToString 转换,因为大多数程序员将不得不查找它以确保它是整数字符串而不是月份中的日期。真的是微软吗?

string daystr = ClockInfoFromSystem.DayOfWeek.ToString("d"); // Whaa? Horrible! Don't do this.

要更改为一周的开始,请添加从星期日 mod 7 开始的天数。从星期日倒数以获取天数,例如从星期日返回 1 是星期六,从星期日返回 2 是星期五,等等。

int satStart = (int)(ClockInfoFromSystem.DayOfWeek + 1) % 7; // Saturday start
int monStart = (int)(ClockInfoFromSystem.DayOfWeek + 6) % 7; // Monday start
于 2021-09-13T21:42:28.223 回答