我需要在asp.net中更改一週的第一天,即我希望星期六成爲本週的第一天。如何更改哪一天是一週中的第一天?
例如,下面的代碼應該在星期一返回3:
(int)DateTime.Now.DayOfWeek
我需要在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