Soru C #: İlk DayOfWeek'i Pazartesi değil, Pazar olarak ayarlayın


İlk DayOfWeek'i pazartesi = 0 Pazar günü olarak ayarlamak için bir yol var mı?

(int)dateList[0].DayOfWeek == 0) // 0 = Sunday

17
2018-06-28 19:41


Menşei


Tamamlanmamış bir kod satırı göndermek için -1 - jk - Nate Zaugg
Değişir. Değerlerle ne yapıyorsun? - SLaks


Cevaplar:


Özel bir kültür oluşturmanız ve ilk DayOfWeek'i pazartesi olarak belirtmeniz gerekir. Özel kültürünüzün bir örneğinin, normalde kültür bilgisine erişmek için hangi bağlamın kullanıldığına ayarlanması gerekir (ör. Thread.CurrentCulture). Aşağıdaki makale, özel bir kültür oluşturmaya başlamanızı sağlamalıdır:

Nasıl Yapılır: Özel Kültürler Yaratın

DÜZENLE:

Sadece sorunuzu okudum ve bir şey fark ettim. DayOfWeek özelliğini değiştiremezsiniz ... bu sadece bir numaralandırma değeridir. DayOfWeek'i CultureInfo.DateTimeFormat özelliğinin FirstDayOfWeek özelliğiyle karşılaştırmanız gerekir:

dateList[0].DayOfWeek == Thread.CurrentCulture.DateTimeFormat.FirstDayOfWeek

Varsayılan olarak, FirstDayOfWeek olduğu Sunday. Özel bir kültür oluşturduysanız, seçtiğiniz haftaın herhangi bir günü olabilir (ör. Monday).


11
2018-06-28 19:50



+1: Bu, doğru bir yaklaşım. DayOfWeek bir sayı değildir ve bir tamsayı olarak ele almak en iyi problemdir. - Reed Copsey
@Reed: Anlaştık. İlk başta OP tarafından kafam karışmıştı ... niyetin ne olduğunu bulmak için bir çift okuma yaptı. - jrista
Haftanın ilk günü, kültüre bağlı mı? Aslında "A" ilk günü çok özneldir. İlk gün, sahip olduğunuz işe bağlı olabilir ... bir hastanede çalışmak pazar günü olabilir. Ofiste çalışıyorsanız veya öğretmenlik yapıyorsanız, onun yerine Pazartesi ;-) </ p> - msfanboy
Kodumu koduma ekleyeceğim belki de daha sonra ihtiyacım var, kullanıcı ilk güne bir güne ihtiyaç duyduğunda - msfanboy
@msfanboy: Kültürel ortak "haftanın ilk günü" günleri vardır. Amerika'da, haftanın ilk günü, ortak bir kültür perspektifinden Pazar günü, haftanın sonu Cumartesi. Bir çalışma haftası perspektifinden, haftanın ilk günü çoğu durumda Pazartesi'dir. .NET için tanımlanmış birçok kültür var, ancak eğer bir kültürün ayrıntılarını özelleştirmeniz gerekiyorsa, ilk DOW'ın Pazartesi olduğu bir Çalışma Haftası Kültürü sağlamak gibi, bu yeteneğe sahipsiniz. Teknik olarak, kendi kişisel yaşam tarzınızı özel olarak tanımlayan bir kültür yaratabilirsiniz. ;) - jrista


DayOfWeek bir enum ve böylece onu değiştiremezsin. Geçmişte, telafi etmek için depoladığım değeri ayarladım ve benzer bir şey yapmak zorunda kalabilirsiniz. 0 = Unset'e ihtiyacım vardı.


3
2018-06-28 19:46





Sadece bu sorunu arayan kişiler için bunu tamamlamak için basit çözümüm (VB.NET):

Private Function GetTrueDayOfWeek(DayOfWeekUS As Int16)
    Dim RetVal As Int16 = 0
    If DayOfWeekUS = 0 Then
        RetVal = 7
    Else
        RetVal = DayOfWeekUS
    End If
    Return RetVal
End Function

Kullanımı:

Dim TrueDayInWeek as int16
TrueDayInWeek = GetTrueDayOfWeek(dateList(0).DayOfWeek)

0
2017-08-01 14:15