2011-10-09 28 views

cevap

1

I (DayOfWeek Enumeration) kullanılarak senin sadece kültür değiştirmeniz gerekir herhalde.

Thread.CurrentThread.CurrentCulture = New CultureInfo("ar-EG") 
+0

, DayOfWeek enum değişmez. Endeksler, Pazar = 0, Pazartesi = 1 ve benzeri kalır. – Marcus

4

Bir asp.net uygulamasında, haftanın ilk gününü değiştirmek için aşağıdaki kodu kullanın. Bu numaralandırılmasıdır System.DayOfWeek türüdür olarak

CultureInfo _culture = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 
CultureInfo _uiculture = (CultureInfo)CultureInfo.CurrentUICulture.Clone(); 

_culture.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Saturday; 
_uiculture.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Saturday; 

System.Threading.Thread.CurrentThread.CurrentCulture = _culture; 
System.Threading.Thread.CurrentThread.CurrentUICulture = _uiculture; 
+0

System System.Globalization' kullanmanız gerekiyor 0 –

+0

Bu değişikliğin ömrünü biliyor musunuz, sunucuya yapılan sonraki çağrıyla önceki ayara dönebilir mi? Teşekkürler – Ian

+0

Bu da yanlış. Aşağıda belirtildiği gibi, mevcut iplik kültürüne ne yaparsanız yapın, DayOfWeek enum değerleri sabittir ve Sunday = 0 ... – Marcus

5

için DateTime.DayOfWeek değerini etkileyen olmayan (yani değerler sabittir). System.DayOfWeek için tanım aşağıdaki kod bloğundadır. Yani, DayOfWeek'u, pazartesi ve cumartesi günleri haftanın ilk günü olmak üzere 3 gibi davranmak isterseniz, o zaman 1'den 7'ye kadar bir sayı sistemi istediğinizi varsaymam gerekir. Bu durumda, istediğiniz numaraları almak için ((int)DateTime.Now.DayOfWeek+1) % 7 + 1 yapabilirsiniz. Hesaplamalar için buna ihtiyacınız yoksa, sadece DateTime.Now.DayOfWeek değerini enum sabitleriyle karşılaştırmak daha iyi olurdu (ör. if(DateTime.Now.DayOfWeek == DayOfWeek.Monday) ...).

// Summary: 
//  Specifies the day of the week. 
[Serializable] 
[ComVisible(true)] 
public enum DayOfWeek 
{ 
    // Summary: 
    //  Indicates Sunday. 
    Sunday = 0, 
    // 
    // Summary: 
    //  Indicates Monday. 
    Monday = 1, 
    // 
    // Summary: 
    //  Indicates Tuesday. 
    Tuesday = 2, 
    // 
    // Summary: 
    //  Indicates Wednesday. 
    Wednesday = 3, 
    // 
    // Summary: 
    //  Indicates Thursday. 
    Thursday = 4, 
    // 
    // Summary: 
    //  Indicates Friday. 
    Friday = 5, 
    // 
    // Summary: 
    //  Indicates Saturday. 
    Saturday = 6, 
} 
+1

dönecektir. Bu iyi bir teşekkür. Yani, eğer pazartesi ilk günü olarak isterseniz, ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1 .... 1-7 için ... ya da 0-6 numaralama için +1'i bırakın – Ian

0

İlk hafta içi bir alternatife dayalı olarak sıfır tabanlı bir dizin döndüren bu C# uzantısı yöntemini oluşturdum. Pazar = 0, Pazartesi = 1, ..., Cumartesi = 6.

DayOfWeek varsayılan İstiyoruz (örn.,) DayOfWeek 0 = Pazartesi olmak, Salı = 1, ..., Pazar = 6.

akım hafta içi Pazar olduğu göz önüne alındığında: Eğer iplik kültürünü değiştirmek için bu mantıklı değil

DateTime.Now.DayOfWeek; // returns Sunday 
(int)DateTime.Now.DayOfWeek; // returns 0 
DateTime.Now.DayOfWeek(DayOfWeek.Monday); // returns 6  

public static class ExtensionMethods 
{ 
    /// <summary> 
    /// Returns an zero-based index where firstDayOfWeek = 0 and lastDayOfWeek = 6 
    /// </summary> 
    /// <param name="value"></param> 
    /// <param name="firstDayOfWeek"></param> 
    /// <returns>int between 0 and 6</returns> 
    public static int DayOfWeek(this DateTime value, DayOfWeek firstDayOfWeek) 
    { 
     var idx = 7 + (int)value.DayOfWeek - (int)firstDayOfWeek; 
     if (idx > 6) // week ends at 6, because Enum.DayOfWeek is zero-based 
     { 
      idx -= 7; 
     } 
     return idx; 
    } 
} 
İlgili konular