NSDate 處理時間問題

2021-06-03 02:08:07 字數 2500 閱讀 5140

nsdate類用於儲存時間值,同時提供了一些方法來處理一些基於秒級別時差(timeinterval)運算和日期之間的早晚比較等。

a).建立或初始化可用以下方法

用於建立nsdate例項的類方法有:

+ (id)date;

返回當前時間

+(id)datewithtimeintervalsincenow:(nstimeinterval)secs; 

返回以當前時間為基準,然後過了secs秒的時間

+(id)datewithtimeintervalsincereferencedate:(nstimeinterval)secs;

返回以2001/01/01 gmt為基準,然後過了secs秒的時間

+(id)datewithtimeintervalsince1970:(nstimeinterval)secs;

返回以1970/01/01 gmt為基準,然後過了secs秒的時間

+(id)distantfuture;

返回很多年以後的未來的某一天。

比如你需要乙個比現在(now)晚(大)很長時間的時間值,則可以呼叫該方法。測試返回了4000/12/31 16:00:00

+(id)distantpast;

返回很多年以前的某一天。

比如你需要乙個比現在(now)早(小)大很長時間的時間值,則可以呼叫該方法。測試返回了西元前0001/12/3117:00:00

用於建立nsdate例項的例項方法有

- (id)addtimeinterval:(nstimeinterval)secs;

返回以目前的例項中儲存的時間為基準,然後過了secs秒的時間

用於初始化nsdate例項的例項方法有

- (id)init;

初始化為當前時間。類似date方法

-(id)initwithtimeintervalsincereferencedate:(nstimeinterval)secs;

初始化為以2001/01/01gmt為基準,然後過了secs秒的時間。類似datewithtimeintervalsinc

ereferencedate:方法

-(id)initwithtimeinterval:(nstimeinterval)secs sincedate:(nsdate*)refdate;

初始化為以refdate為基準,然後過了secs秒的時間

-(id)initwithtimeintervalsincenow:(nstimeinterval)secs;

初始化為以當前時間為基準,然後過了secs秒的時間

b).日期之間比較,可用以下方法:

-(bool)isequaltodate:(nsdate *)otherdate;

與otherdate比較,相同返回yes

- (nsdate*)earlierdate:(nsdate *)anotherdate;

與anotherdate比較,返回較早的那個日期

- (nsdate*)laterdate:(nsdate *)anotherdate;

與anotherdate比較,返回較晚的那個日期

-(nscomparisonresult)compare:(nsdate *)other;

該方法用於排序時呼叫:

. 當例項儲存的日期值與anotherdate相同時返回nsorderedsame

. 當例項儲存的日期值晚於anotherdate時返回nsordereddescending

. 當例項儲存的日期值早於anotherdate時返回nsorderedascending

c).時間間隔,可用以下方法:

-(nstimeinterval)timeintervalsincedate:(nsdate*)refdate;

以refdate為基準時間,返回例項儲存的時間與refdate的時間間隔

-(nstimeinterval)timeintervalsincenow;

以當前時間(now)為基準時間,返回例項儲存的時間與當前時間(now)的時間間隔

-(nstimeinterval)timeintervalsince1970;

以1970/01/01 gmt為基準時間,返回例項儲存的時間與1970/01/01 gmt的時間間隔

-(nstimeinterval)timeintervalsincereferencedate;

以2001/01/01 gmt為基準時間,返回例項儲存的時間與2001/01/01 gmt的時間間隔

+(nstimeinterval)timeintervalsincereferencedate;

以2001/01/01 gmt為基準時間,返回當前時間(now)與2001/01/01 gmt的時間間隔

d). 將時間表示成字串

- (nsstring*)description;

以yyyy-mm-dd hh:mm:ss ±hhmm的格式表示時間。

其中 "±hhmm" 表示與gmt的存在多少小時多少分鐘的時區差異。比如,若時區設定在北京,則 "±hhmm" 顯示為 "+0800"

在mysql中處理時間問題

mysql有很多函式可以處理日期和時間,提高工作效率。注意,盡量使用標準格式的日期,如 2018 01 01 或者 2018 01 01 00 00 00 timestampdiff函式 第一種 timestampdiff函式,需要傳入三個引數,第乙個是比較的型別,可以比較frac second s...

PHP 時間問題處理與獲取

php獲取格林威治標準時間錯誤問題 北京時間差了正好8個小時 檔案頭載入此函式 prc代表中國 date default timezone set prc 修改php.ini檔案 預設 date.timezone 修改為 date.timezone prc echo date y m d h i s...

NSdate時間轉換問題

使用nsdateformatter轉換時間字串時,預設的時區是系統時區,如我們使用一般都是北京時間 8 如果直接使用 cpp view plain copy print?dateformatter datefromstring 2012 01 01 00 00 00 你會發現實際轉換為2011 12...