在ios開發時,會經常用到一些處理時間的函式和方法,比如求當前時間,計算兩個日期差幾天,格式化現在時間與給定的秒數的時間差等。所以就整理並歸納了一些比較實用的方法。
主要用到的類有: nsdate, nsdateformatter, nscalendar, nsdatecomponents, nstimeinterval,
#import
@inte***ce cxztimeutil : nsobject
/** * 得到單例
*t * @return 單例的物件
*/+ (id)getinstance;
/** * 得到當前時區的時間,一般為北京時間
* * @return nsdate物件
*/- (nsdate *)datenow;
/** * 獲取自2023年到現在的秒數
* * @return 秒數
*/- (nsinteger)currentsecond;
/** * 獲取自2023年到現在的毫秒數
* * @return 毫秒數
*/- (long
long)currentmsec;
/** * 獲取當前的日期物件
* * @return 日期物件
*/- (nsdatecomponents *)currentdatecompoent;
/** * 通過給定的nsdate得到日期物件
* * @param date nsdate
* * @return 日期物件
*/- (nsdatecomponents *)datecompoentfromdate:(nsdate *)date;
/** * 獲取某年某月最大天數
* * @param year 年份
* @param month 月份
* * @return 天數
*/- (nsinteger)maxdayforyear:(nsinteger *)year month:(nsinteger)month;
/** * 通過制定的引數獲取nsdate物件
* * @param year 年
* @param month 月
* @param day 日
* @param hour 時
* @param monute 分
* @param second 秒
* * @return nsdate物件
*/- (nsdate *)datefromyear:(nsinteger)year month:(nsinteger)month day:(nsinteger)day hour:(nsinteger)hour minute:(nsinteger)minute second:(nsinteger)second;
/** * 通過components獲取nsdate物件
* * @param components nsdatecomponents型別
* * @return nsdate物件
*/- (nsdate *)datefromcomponents:(nsdatecomponents *)components;
/** * 通過秒數來獲取時間字串
* * @param second 自2023年開始的秒數
* * @return 時間字串
*/- (nsstring *)datestringfromsecond:(nsinteger)second;
/** * 得到date之後或之前的日子,正表示之後,負表示之前
* * @param date 基準時間
* @param year 年
* @param month 月
* @param day 日
* * @return 計算之後的日期
*/- (nsdate *)dateafterfromdate:(nsdate *)date withyear:(nsinteger)year month:(nsinteger)month day:(nsinteger)day;
/** * 計算兩個日期差幾天
* * @param date1 日期1
* @param date2 日期2
* * @return 差的天數
*/- (nsinteger)differencefromdate:(nsdate *)date1 todate:(nsdate *)date2;
/** * 格式化現在時間與給定的秒數的時間差
* * @param second 自2023年開始的秒數
* * @return 格式化後的字串
*/- (nsstring *)formatdifferencetonowfromsecond:(nsinteger)second;
@end
}
#import "cxztimeutil.h"
@implementation
cxztimeutil
+ (id)getinstance );
return singleton;
}- (nsdate *)datenow
- (nsinteger)currentsecond
- (long
long)currentmsec
- (nsdatecomponents *)currentdatecompoent
- (nsdatecomponents *)datecompoentfromdate:(nsdate *)date
- (nsinteger)maxdayforyear:(nsinteger *)year month:(nsinteger)month
- (nsdate *)datefromyear:(nsinteger)year month:(nsinteger)month day:(nsinteger)day hour:(nsinteger)hour minute:(nsinteger)minute second:(nsinteger)second
- (nsdate *)datefromcomponents:(nsdatecomponents *)components
- (nsstring *)datestringfromsecond:(nsinteger)second
- (nsdate *)dateafterfromdate:(nsdate *)date withyear:(nsinteger)year month:(nsinteger)month day:(nsinteger)day
- (nsinteger)differencefromdate:(nsdate *)date1 todate:(nsdate *)date2
- (nsstring *)formatdifferencetonowfromsecond:(nsinteger)second
if (diff >= 60 && diff < 3600)
if (diff >= 3600 && diff < 3600 * 24)
//幾天前
return [nsstring stringwithformat:@"%ld天前", diff/(3600*24)];
}@end
在開發時往往會遇到後台端返回如下的json
"data": [,。。。。。已經省略
}]
add_time = 1439046677,這是從本條資料生成的時間到2023年1月1日00:00:00的秒數,所以你需要用到- (nsstring *)formatdifferencetonowfromsecond:(nsinteger)second來求出過了幾秒、幾分鐘或者幾天。
如果你用 [nsdate date]方法你將會得到gmt時間,這會和我們的北京時間相差8個小時,所以當你想要得到北京的當時時間,你就必須通過
- (nsdate *)datenow
來獲取當前時區的當前時間,這是通過相差的秒數相加實現的。
我另一篇部落格會詳細介紹時間日曆的其他操作。希望各位能用上。
時間與日期處理nsdate, nscalendar
時間與日期
通常確定時間和日期對乙個程式來說是很有用的,程式可能希望記錄執行時間.或者在某一時間後改變執行方式.例如乙個遊戲可能需要玩家在倒計時內完成某個任務 所有的 系統都使用同一時間和日期起點 格林威治時間 1970年1月1日.而 紀元開始於1980年.時間通過乙個長整型的預定義型別time t來表示,它和...
c 時間與日期
注意c 11有更強大的方法!隨機數及atoi include int abs int num 功能 函式返回引數num.的絕對值。double atof const char str 功能 將字串str轉換成乙個雙精度數值並返回結果。int atoi const char str 功能 將字串str...
Linux C 時間與日期
linux下儲存時間常見的有兩種儲存方式,乙個是從1970年到現在經過了多少秒,乙個是用乙個結構來分別儲存年月日時分秒的。time t 這種型別就是用來儲存從1970年到現在經過了多少秒,要想更精確一點,可以用結構struct timeval,它精確到微妙。struct timeval 而直接儲存年...