如何得到星期几的整数值

我如何得到整数格式的星期几? 我知道 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
261440 次浏览

使用

day1 = (int)ClockInfoFromSystem.DayOfWeek;
day1= (int)ClockInfoFromSystem.DayOfWeek;
int day = (int)DateTime.Now.DayOfWeek;

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

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

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;

试试这个,效果很好:

int week = Convert.ToInt32(currentDateTime.DayOfWeek);

获取 Enum (如 DayOfWeek)的整数值作为字符串的正确方法是:

DayOfWeek.ToString("d")

另一种获得具有整数值1的星期一和具有整数值7的星期日的方法

int day = ((int)DateTime.Now.DayOfWeek + 6) % 7 + 1;

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

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

if (yourDateTimeObject.DayOfWeek == DayOfWeek.Sunday)
{
// You can easily see you're checking for sunday, and not just "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.

若要更改为本周开始,请添加从周日模式7开始的天数。从星期日开始倒数,得到天数,例如: 1从星期日返回是星期六,2从星期日返回是星期五,等等。

int satStart = (int)(ClockInfoFromSystem.DayOfWeek + 1) % 7; // Saturday start
int monStart = (int)(ClockInfoFromSystem.DayOfWeek + 6) % 7; // Monday start