如何更改哪一天是一周中的第一天?
我需要在asp.net中更改一周的第一天,即我希望星期六成为本周的第一天。如何更改哪一天是一周中的第一天?
例如,下面的代码应该在星期一返回3:
(int)DateTime.Now.DayOfWeek
我想你只需要你的使用(DayOfWeek Enumeration)改变文化。
Thread.CurrentThread.CurrentCulture = New CultureInfo("ar-EG")
使用以下代码更改asp.net应用程序中的第一个星期几。
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;
不能影响的DateTime.DayOfWeek
的值,因为这是一种类型的System.DayOfWeek
这是枚举(即,的值是恒定的)。 System.DayOfWeek
的定义在下面的代码块中。因此,如果您想在周一和周六将DayOfWeek
视为3
这一周的第一天,那么我必须假设您需要基于1到7的编号系统。在这种情况下,您可以使用((int)DateTime.Now.DayOfWeek+1) % 7 + 1
来获得您想要的号码。如果你不需要这个计算,最好只将DateTime.Now.DayOfWeek
的值与它的枚举常量(例如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,
}
这是很好的谢谢。所以,如果你想让星期一作为星期几的第一天,那么它是((int)DateTime.Now.DayOfWeek + 6)%7 + 1 .... for 1-7 ...或者在0-6编号时丢弃+1 – Ian
我已经创建了这个C#扩展方法,该方法基于备选的第一个工作日返回从零开始的索引。
DayOfWeek
默认为星期日= 0,星期一= 1,...,星期六= 6,我们想要的(前)DayOfWeek
是星期一= 0,周二= 1,...,星期日= 6
鉴于当前工作日是星期日:
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枚举不会改变。索引将保持不变,星期日= 0,星期一= 1等等。 – Marcus