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

@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)


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;

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;

@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);

2

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

DayOfWeek.ToString("d")

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;

0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.