Haftanın gününün tamsayı değeri nasıl alınır


104

Tamsayı biçiminde bir haftanın gününü nasıl elde ederim? ToString'in yalnızca bir dize döndüreceğini biliyorum.

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, kodunu kod bloğuna yerleştirmek için kodunu yeniden biçimlendiremedim, bu neden?
uday

4
Arıyorsun ToString()öyleyse neden dizeden başka bir şey bekliyorsun?
Brian Rasmussen

@Dave, onu soru metninden bir satır ayırmak zorunda kaldım, yoksa kodu girintili yaptı ...
Joe

güzel! Kodunu kod bloğuna dönüştürmeye çalışıyordum ve bu yapmama izin vermiyor.
uday

Yanıtlar:



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

Haftanın ilk günü: Pazar (sıfır değeriyle)


65

Haftanın ilk gününü 1 tam sayı ile Pazartesi ve 7 tam sayı ile Pazar olarak ayarlamak istiyorsanız

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

9
Tüm aklı başında insanlar bunu isteyeceği için oy verdi. ISO 8601 bu noktada oldukça açık. Pazartesi 1. gün, Pazar 7. gün
Morvael

DayOfWeek özelliği serbest bırakılmadıysa, pazar günü sıfır döndürülür. En çok oylanan cevabı uygulayarak neredeyse bir hata ortaya çıktı. Teşekkürler!
breez

6
day1= (int)ClockInfoFromSystem.DayOfWeek;

@JustinSatyr - FiveTools açıkça sadece bir örnek veriyordu. Yazarın bir String değerini bir tamsayı değişkenine ayarlamaya çalışması onun hatası değildir.
Güvenlik Hound

@Ramhound: Olumsuz oy vermedim ve eleştirmedim. Kodu yanlış okuduğunu düşündüm. Ve görünüşe göre onun kodunu düzelttiği için haklıydım.
Devin Burke

5

Bunu dene. Gayet iyi çalışacak:

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

3

DayOfWeek gibi bir Enum'un tamsayı değerini dize olarak almanın doğru yolu şudur:

DayOfWeek.ToString("d")

4
Bu bir döndürür string, bir değil int.
Danny Beckett

Bu, haftanın günü değil, ayın günü
Fritz

@Fritz hayır değil, dediğim gibi "dizge olarak" bir enum tamsayısı. Bunun olmadığı tarih biçimlendirmesiyle kafanız karışıyor.
Rob Sedgwick

2

Pazartesi'yi tam sayı değeri 1 ile ve Pazar'ı 7 tam sayı değeri ile almanın başka bir yolu

int gün = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;

0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;

0

Doğru cevap, int değerini elde etmek için gerçekten doğru cevaptır.

Ancak, örneğin sadece Pazar olduğundan emin olmak için kontrol ediyorsanız ... Bir int'e çevrim yerine aşağıdaki kodu kullanmayı düşünün. Bu çok daha fazla okunabilirlik sağlar.

if (yourDateTimeObject.DayOfWeek == DayOfWeek.Sunday)
{
    // You can easily see you're checking for sunday, and not just "0"
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.