Como obter o valor inteiro do dia da semana

104

Como obtenho o dia da semana no formato inteiro? Eu sei que ToString retornará apenas uma string.

DateTime ClockInfoFromSystem = DateTime.Now;
int day1;
string day2;
day1= ClockInfoFromSystem.DayOfWeek.ToString(); /// it is not working
day2= ClockInfoFromSystem.DayOfWeek.ToString(); /// it gives me string
akshaykumar6
fonte
@Joe, não consegui reformatar o código dele para colocar o código no bloco de código, por que isso?
dia
4
Você está ligando, ToString()então por que você esperaria qualquer coisa além de uma corda?
Brian Rasmussen
@Dave, tive que separá-lo em uma linha do texto da pergunta, ou então ele apenas recuou o código ...
Joe
legal! Eu estava tentando transformar o código dele em um bloco de código e não me permitia fazer.
dia

Respostas:

81
int day = (int)DateTime.Now.DayOfWeek;

Primeiro dia da semana: domingo (com valor zero)

peroija
fonte
64

Se você deseja definir o primeiro dia da semana para segunda-feira com valor inteiro 1 e domingo com valor inteiro 7

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
Martin Sansone - MiOEE
fonte
9
Votado positivamente porque todas as pessoas sãs gostariam disso. ISO 8601 é bastante claro nesse ponto. Segunda-feira é o dia 1, domingo é o dia 7.
Morvael
Não liberou a propriedade DayOfWeek retornaria zero no domingo. Quase introduziu um bug ao implementar a resposta mais votada. Obrigado!
breez de
6
day1= (int)ClockInfoFromSystem.DayOfWeek;
FiveTools
fonte
@JustinSatyr - FiveTools estava claramente dando um exemplo. Não é culpa dele o autor estar tentando definir um valor String para uma variável inteira.
Security Hound
@Ramhound: Eu não votei negativamente e não estava criticando. Eu pensei que ele interpretou mal o código. E aparentemente eu estava certo pelo fato de que ele corrigiu seu código.
Devin Burke
5

Experimente isso. Vai funcionar muito bem:

int week = Convert.ToInt32(currentDateTime.DayOfWeek);
RaviKant Hudda
fonte
2

A maneira correta de obter o valor inteiro de um Enum, como DayOfWeek, como uma string é:

DayOfWeek.ToString("d")
Rob Sedgwick
fonte
4
Isso retornará um string, não um int.
Danny Beckett
Este é o dia do mês, não o dia da semana
Fritz,
@Fritz não, não é, é um inteiro enum "as a string" como eu disse. Você está se confundindo com a formatação de data, o que não é verdade.
Rob Sedgwick
2

Outra maneira de obter segunda-feira com valor inteiro 1 e domingo com valor inteiro 7

dia int = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;
Ruslan Hayduk
fonte
0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Michael Murphy
fonte