通常計算天數的的:
nscalendar *gregorian = [[nscalendar alloc]
initwithcalendaridentifier:nsgregoriancalendar];
[gregorian setfirstweekday:2];
nsdateformatter *dateformatter = [[nsdateformatter alloc] init];
[dateformatter setdateformat:@"yyyy-mm-dd hh:mm:ss"];
nsdate *fromdate = [dateformatter datefromstring:@"2014-06-23 12:02:03"];
nsdate *todate = [nsdate date];
nsdatecomponents *daycomponents = [gregorian components:nsdaycalendarunit fromdate:fromdate todate:todate options:0];
這個大多數情況下似乎是正確的,但是在某些時刻會發下它的結果又是錯誤的。實際上它計算出的天間隔還是依賴於兩個日期間的小時數來判斷是否滿足一天的間隔。例如:兩個日期2016-01-23 13:00:00 和 2016-01-24 10:00:00,在這個方法下計算會得出兩個日期的間隔並沒有到一天,因為他們的小時數間隔並沒有達到24個小時。但我們想讓它們的間隔為一天,那麼就需要對兩個日期進行處理,做法是,把兩個日期的鐘點抹平;
計算月數:
nsindexpath *indexpath=[nsindexpath indexpathforrow:3 insection:0];
uitableviewcell *cell = [_table cellforrowatindexpath:indexpath];
nscalendar *gregorian = [[nscalendar alloc]
initwithcalendaridentifier:nsiso8601calendar];
// [gregorian setfirstweekday:2];
nsdateformatter *dateformatter = [[nsdateformatter alloc] init];
[dateformatter setdateformat:@"yyyy-mm-dd"];
nsdate *fromdate;
nsdate *todate;
[gregorian rangeofunit:nscalendarunitday startdate:&fromdate interval:null fordate:[dateformatter datefromstring:_begindatetime]];
// [gregorian rangeofunit:nsdaycalendarunit startdate:&fromdate interval:null fordate:[dateformatter datefromstring:_begindatetime]];
[gregorian rangeofunit:nscalendarunitday startdate:&todate interval:null fordate:[dateformatter datefromstring:_enddatetime]];
nsdatecomponents *daycomponents = [gregorian components:nscalendarunitday fromdate:fromdate todate:todate options:0];
_howlong = round(daycomponents.day/30.0);
計算週數類似, C 計算週數
private int getweekofcurrdate datetime p time 2.datecode system.globalization.gregoriancalendar gc new system.globalization.gregoriancalendar int week...
C 根據日期計算日期週數
當我們知道乙個日期後,有的時候想知道當前日期是當年的第幾周 如我們做週報計畫什麼的就可能遇到 一周的第一天是週幾有兩種說法,有的是以周一圍一周的第一天,有的是以週日為一周的第一天,下面根據兩種情況分別來計算 一 以週日為一周的第一天 根據日期計算日期週數 以週日為一周的第一天 日期 日期週數 pri...
java 計算制定時間內的月數
private int getmonths gregoriancalendar g1,gregoriancalendar g2 else gc1.clear calendar.millisecond gc1.clear calendar.second gc1.clear calendar.minut...