格式化時(shí)間表示
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"MMMM dd, yyyy cccc H:m a";
formatter.calendar = calendar;
NSLog(@"%@", [formatter stringFromDate:[NSDate date]]);
其中常用占位符及含義如下:
d 日, dd 表示不足兩位時(shí)用0占位
M 月份, 數(shù)字形式; MM 不足兩位用前導(dǎo)0占位; MMM 縮寫形式(如 Jan); MMMM 完整形式(如 January).
yyyy 年份
cccc 周幾 (如 Tuesday)
H 小時(shí)
m 分鐘
s 秒
a 上午/下午(如 AM)
格式化的結(jié)果是根據(jù)系統(tǒng)語言來本地化的, 比如 MMMM 在簡體中文時(shí)會(huì)生成八月
轉(zhuǎn)到當(dāng)前默認(rèn)時(shí)區(qū)
NSTimeInterval someDate = ...;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:someDate];
NSInteger ticks = [[NSTimeZone defaultTimeZone] secondsFromGMT];
date = [date dateByAddingTimeInterval:ticks];
// 沒有找到更好的方法, 這里只是用當(dāng)前默認(rèn)時(shí)區(qū)相對(duì)GMT偏移的秒數(shù)加
// 上去得到一個(gè)當(dāng)前時(shí)區(qū)的時(shí)間表示. 不知道有沒有更合適直接的方法來完成.
獲取今天的開始時(shí)間
NSCalendar 提供了 startOfDayForDate 接口直接完成該功能
NSDate *today = [[NSCalendar currentCalendar] startOfDayForDate:[NSDate date]];
// 相應(yīng)的, 明天的開始可以在today基礎(chǔ)上加上一天的秒數(shù)即可
NSDate *tommorror = [today dateByAddingTimeInterval:60.0 * 60.0 * 24.0];