OC中關於日期與時間的處理

2021-09-19 14:10:02 字數 3711 閱讀 6834

在我們的開發中與日期打交道是常有的事情,oc中提供了nsdate和nscalendar來給我們進行時間相關的處理與操作,還是非常容易的,下面我們就一起看一看.

nsdate可以用來表示時間, 可以進行一些常見的日期\時間處理,乙個nsdate物件就代表乙個時間

nsdate *now = [nsdate date];

nslog(@"now = %@", now);

// 設定轉換後的目標日期時區

nstimezone *zone = [nstimezone systemtimezone];

// 得到源日期與世界標準時間的偏移量

nsinteger interval = [zone secondsfromgmtfordate: date];

nslog(@"interval = %lu", interval);

// 在當前時間基礎上追加時區差值

now = [now datebyaddingtimeinterval:interval];

nslog(@"%@", date);

// 1.建立時間

nsdate *now = [nsdate date];

// 2.建立時間格式化

nsdateformatter *formatter = [[nsdateformatter alloc] init];

// 3.指定格式

formatter.dateformat = @"yyyy-mm-dd hh:mm:ss";

// 4.格式化時間

nsstring *str = [formatter stringfromdate:now];

nslog(@"%@", str);

nsstring *str = @"2015-06-28 19:53:24";

nsdateformatter *formatter = [[nsdateformatter alloc] init];

formatter.dateformat = @"yyyy-mm-dd hh:mm:ss";

nsdate *date = [formatter datefromstring:str];

nslog(@"%@", date);

- (void)fmt_string_to_date2
// 解析 時間戳

- (void)fmt_string_to_date3

結合nscalendar和nsdate能做更多的 日期\時間 處理

nsdate *date = [nsdate date];

// 1.建立日曆物件

nscalendar *calendar = [nscalendar currentcalendar];

// 2.利用日曆物件獲取年月日時分秒

nscalendarunit unit = nscalendarunityear | nscalendarunitmonth | nscalendarunitday | nscalendarunithour | nscalendarunitminute | nscalendarunitsecond;

nsdatecomponents *components =[calendar components:type fromdate:date];

nslog(@"year = %lu", cmps.year);

nslog(@"month = %lu", cmps.month);

nslog(@"day = %lu", cmps.day);

nslog(@"hour = %lu", cmps.hour);

nslog(@"minute = %lu", cmps.minute);

nslog(@"second = %lu", cmps.second);

nslog(@"date = %@", date);

// 1.確定時間

nsstring *time1 = @"2015-06-23 12:18:15";

nsstring *time2 = @"2015-06-28 10:10:10";

// 2.將時間轉換為date

nsdateformatter *formatter = [[nsdateformatter alloc] init];

formatter.dateformat = @"yyyy-mm-dd hh:mm:ss";

nsdate *date1 = [formatter datefromstring:time1];

nsdate *date2 = [formatter datefromstring:time2];

// 3.建立日曆

nscalendar *calendar = [nscalendar currentcalendar];

nscalendarunit unit = nscalendarunityear | nscalendarunitmonth | nscalendarunitday | nscalendarunithour | nscalendarunitminute | nscalendarunitsecond;

// 4.利用日曆物件比較兩個時間的差值

nsdatecomponents *cmps = [calendar components:unit fromdate:date1 todate:date2 options:0];

// 5.輸出結果

nslog(@"兩個時間相差%ld年%ld月%ld日%ld小時%ld分鐘%ld秒", cmps.year, cmps.month, cmps.day, cmps.hour, cmps.minute, cmps.second);

ios8.0開始,nscalendar增加了一些更為簡單的判斷日期的方法,如:

- (bool)isdate:(nsdate *)date1 equaltodate:(nsdate *)date2 tounitgranularity:(nscalendarunit)unit;

- (bool)isdate:(nsdate *)date1 insamedayasdate:(nsdate *)date2;

- (bool)isdateintoday:(nsdate *)date;

- (bool)isdateinyesterday:(nsdate *)date;

- (bool)isdateintomorrow:(nsdate *)date;

- (bool)isdateinweekend:(nsdate *)date;

但是ios8.0以前是沒有這些方法的,為了更好的相容ios8.0以前的專案,我們可以人為的給nsdate類做一些擴充套件.(新建繼承自nsdate的分類,在分類裡擴充套件方法)

**如下所示:

#import "nsdate+b***tension.h"

@implementation nsdate (b***tension)

/** * 是否是今天

*/- (bool)istoday

/** * 是否是昨天

*/- (bool)isyesterday

/** * 是否是明天

*/- (bool)istomorrow

/** * 是否是今年

*/- (bool)isthisyear

@end

OC菜鳥成長記 OC中的日期和時間

日期和時間 獲取系統時間 nsdate date nsdate date nslog date 將時間轉換為字串 設定時間格式 nsdateformatter dateformatter nsdateformatter new dateformatter setdateformat yyyy mm ...

關於Python中的日期處理

首先獲取時間 import time print time.time 輸出的結果是 1511495129.260231但是這樣是一連串的數字不是我們想要的結果,我們可以利用time模組的格式化時間的方法來處理 time.localtime time.time 用time.localtime 方法,作...

mysql中時間日期的處理

1 select srcapid as apid,year statdate as datey,month statdate as datem,ticketflag as bstype,sum case when msgstatus is not null and msgstatus and msg...