C 獲取當前日期當年的週數

2022-01-13 16:45:43 字數 1316 閱讀 4014

這幾天跨年,專案上遇到了乙個週數計算的問題。

2023年的元旦是周五開始的,之前系統計算的是屬於15年的第53個周,但是年份已經到了16年了。

公司要求從1月1號周五開始算作16年的第乙個周,今天1月4號也就是周一,開始算作16年的第二個周。

網上的解決方案是這樣子的。

//

一.找到第一周的最後一天(先獲取1月1日是星期幾,從而得知第一周週末是幾)

int firstweekend=7-convert.toint32(datetime.parse(datetime.today.year + "

-1-1

").dayofweek);

//二.獲取今天是一年當中的第幾天

int currentday =datetime.today.dayofyear;

//三.(今天 減去 第一周週末)/7 等於 距第一周有多少周 再加上第一周的1 就是今天是今年的第幾周了

//剛好考慮了惟一的特殊情況就是,今天剛好在第一周內,那麼距第一周就是0 再加上第一周的1 最後還是1

return convert.toint32(math.ceiling((currentday - firstweekend) / 7.0)) + 1;

2023年還沒問題,但是到了2023年1月1號,那天剛好是週日,就開始算錯了。

然後稍微做了修改,之後是這樣。

var dt = new datetime(2017, 01, 01

);

//找到今年的第一天是週幾

int firstweekend = convert.toint32(datetime.parse(dt.year + "

-1-1

").dayofweek);

//獲取第一周的差額,如果是週日,則firstweekend為0,第一周也就是從周天開始的。

int weekday = firstweekend == 0 ? 1 : (7 - firstweekend + 1

);

//獲取今天是一年當中的第幾天

int currentday =dt.dayofyear;

//(今天 減去 第一周週末)/7 等於 距第一周有多少周 再加上第一周的1 就是今天是今年的第幾周了

//剛好考慮了惟一的特殊情況就是,今天剛好在第一周內,那麼距第一周就是0 再加上第一周的1 最後還是1

int current_week = convert.toint32(math.ceiling((currentday - weekday) / 7.0)) + 1;

計算正確。

獲取當前日期

js獲取當前時間 獲取當前時間戳 function getnowdate 時間戳轉所需樣式 timechange.js long型別時間轉換為日期 擴充套件date的format方法 date.prototype.format function format if y test format for...

C 獲取當前日期時間

今天 datetime.now.date.toshortdatestring 昨天,就是今天的日期減一 datetime.now.adddays 1 toshortdatestring 明天,同理,加一 datetime.now.adddays 1 toshortdatestring 本週 要知道本...

c 獲取當前日期時間

獲取日期 時間 datetime.now.tostring 2008 9 4 20 02 10 datetime.now.tolocaltime tostring 2008 9 4 20 12 12 獲取日期 datetime.now.tolongdatestring tostring 2008年9...