Haftanın ilk gününü asp.net'de değiştirmem gerekiyor, yani cumartesi'nin haftanın ilk günü olmasını istiyorum.Haftanın ilk günü hangi günü nasıl değiştirebilirim?
Örneğin, aşağıdaki kod Pazartesi günü 3 dönmelidir:
(int)DateTime.Now.DayOfWeek
Haftanın ilk gününü asp.net'de değiştirmem gerekiyor, yani cumartesi'nin haftanın ilk günü olmasını istiyorum.Haftanın ilk günü hangi günü nasıl değiştirebilirim?
Örneğin, aşağıdaki kod Pazartesi günü 3 dönmelidir:
(int)DateTime.Now.DayOfWeek
I (DayOfWeek Enumeration) kullanılarak senin sadece kültür değiştirmeniz gerekir herhalde.
Thread.CurrentThread.CurrentCulture = New CultureInfo("ar-EG")
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;
System System.Globalization' kullanmanız gerekiyor 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
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
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,
}
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
İ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;
}
}
, DayOfWeek enum değişmez. Endeksler, Pazar = 0, Pazartesi = 1 ve benzeri kalır. – Marcus