第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取給定日期的正確周數(shù)。

獲取給定日期的正確周數(shù)。

C#
紫衣仙女 2019-07-27 15:15:17
獲取給定日期的正確周數(shù)。我在谷歌上搜索了很多,找到了很多解決方案,但是沒有一個給我正確的2012-12-31周數(shù)。甚至MSDN上的示例(鏈接)失敗。2012-12-31是星期一,所以應(yīng)該是第一周,但是我嘗試的每一種方法都給了我53。以下是我嘗試過的一些方法:來自MDSN庫:DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;Calendar cal = dfi.Calendar;return cal.GetWeekOfYear(date, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);解決方案2:return new GregorianCalendar(GregorianCalendarTypes.Localized).GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);解決方案3:CultureInfo ciCurr = CultureInfo.CurrentCulture;int weekNum = ciCurr.Calendar.GetWeekOfYear(dtPassed, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);return weekNum;更新當(dāng)日期為2012-12-31時,下面的方法實際上返回1。換句話說,我的問題是我的方法沒有遵循ISO-8601標(biāo)準(zhǔn)。// This presumes that weeks start with Monday.// Week 1 is the 1st week of the year with a Thursday in it.public static int GetIso8601WeekOfYear(DateTime time){     // Seriously cheat.  If its Monday, Tuesday or Wednesday, then it'll      // be the same week# as whatever Thursday, Friday or Saturday are,     // and we always get those right     DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);     if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)     {         time = time.AddDays(3);     }     // Return the week of our adjusted day     return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);}
查看完整描述

3 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊

一年可以超過52周。每年有52個完整的周+1或+2(閏年)天。他們彌補了第53個星期。

  • 52周*7天=364天。

因此,每年你至少有一個額外的一天。閏年兩次。這些額外的日子是否被算作他們自己的單獨的一周?

到底有多少周取決于你一周的開始日期。讓我們考慮一下2012年的情況。

  • 美國(星期日->星期六):2012年-12-30和2012-12-31,每周52周+一周短2天.這總共需要53周的時間。今年的最后兩天(星期日+星期一)組成了他們自己的短短的一周。

檢查當(dāng)前文化的設(shè)置,看看它作為一周的第一天使用了什么。

正如你所看到的,結(jié)果得到53是正常的。

  • 歐洲(星期一->星期日):1月2日(2012-1-2年)是第一個星期一,所以這是第一周的第一天。問問1月1日的周數(shù),你就會得到52周,因為它被認(rèn)為是2011年最后一周的一部分。

甚至有可能有第54周。每28年發(fā)生一次,1月1日和12月31日被視為單獨的一周。今年一定也是閏年。

例如,2000年有54周。1月1日為第一周,12月31日為第二周。

var d = new DateTime(2012, 12, 31);CultureInfo cul = CultureInfo.CurrentCulture;var firstDayWeek = cul.Calendar.GetWeekOfYear(
    d,
    CalendarWeekRule.FirstDay,
    DayOfWeek.Monday);int weekNum = cul.Calendar.GetWeekOfYear(
    d,
    CalendarWeekRule.FirstDay,
    DayOfWeek.Monday);int year = weekNum == 52 && d.Month == 1 ? d.Year - 1 : d.Year;Console.WriteLine("Year: {0} Week: {1}", year, weekNum);

打印:年份:2012年周:54

將上面示例中的CalportWeekRule更改為FirstFullWeek或FirstFourDayWeek,您將得到53。既然我們正在和德國打交道,讓我們把開學(xué)日保持在星期一。

因此,第53周從2012年至12月31日星期一開始,持續(xù)一天,然后停止。

53是正確的答案。如果想嘗試的話,就把文化換到德國。

CultureInfo cul = CultureInfo.GetCultureInfo("de-DE");




查看完整回答
反對 回復(fù) 2019-07-28
  • 3 回答
  • 0 關(guān)注
  • 377 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號