2012-02-08 38 views
64

Tamsayı biçiminde bir haftanın gününü nasıl alabilirim? ToString'in sadece bir ip döndüreceğini biliyorum.Hafta içi gün tamsayı değeri nasıl edinilir

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

@Joe, Kodunu kod bloğuna yerleştirmek için kodunu yeniden biçimlendiremedim, neden bu? – uday

+3

“ToString()” yi çağırıyorsunuz, neden bir ipekten başka bir şey beklemesiniz? –

+0

@Dave, Sorunun metninden bir satır ayırmak zorunda kaldım, ya da sadece kod girmişti ... – Joe

cevap

114

Kullanım

day1 = (int)ClockInfoFromSystem.DayOfWeek; 
+0

, pazartesi için 0'a geri dönecek? – akshaykumar6

+9

@developer Pazar 0'dır. Http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx –

+31

Pazartesi gününün 0 olmasını istiyorsanız, sadece günleri kaydırın: 'day1 = (int) (ClockInfoFromSystem .DayOfWeek + 6)% 7' –

6
day1= (int)ClockInfoFromSystem.DayOfWeek; 
+0

@JustinSatyr - FiveTools açıkça bir örnek veriyordu. Yazarın bir tam sayı değişkenine String değeri ayarlamayı denemesi onun hatası değildir. –

+0

@Ramhound: Reddetmedim ve eleştirmedim. Kodu yanlış okuduğunu düşündüm. Ve görünüşe göre onun kodunu düzeltmesi gerçeğiyle doğruydu. –

55
int day = (int)DateTime.Now.DayOfWeek; 
haftanın

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

37

size haftanın ilk gününü ayarlamak isterseniz Pazartesi tamsayı 1 ve Pazar ile tamsayı değeri 7

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

Tüm aklı başında insanlar bunu isterler. ISO 8601 bu noktada oldukça açık. Pazartesi gün 1, Pazar gün 7'dir. – Morvael

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

Bunu deneyin. O sadece iyi çalışır:

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

DAYOFWEEK olarak bir Enum böyle bir tamsayı değeri elde etmek için doğru bir yol bir dize olarak: tamsayı değeri 1 ve Pazar ile Pazartesi almak için

DayOfWeek.ToString("d") 
+3

Bu, bir "string" değil, bir "int" döndürecektir. –

0

bir başka yolu tamsayı değeri 7 ile

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