大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

iOS 中时间相关的操作

格式化时间表示

    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 表示不足两位时用0占位
M 月份, 数字形式; MM 不足两位用前导0占位; MMM 缩写形式(如 Jan); MMMM 完整形式(如 January).
yyyy 年份
cccc 周几 (如 Tuesday)
H 小时
m 分钟
s 秒
a 上午/下午(如 AM)
格式化的结果是根据系统语言来本地化的, 比如 MMMM 在简体中文时会生成八月

转到当前默认时区

    NSTimeInterval someDate = ...;
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:someDate];
    NSInteger ticks = [[NSTimeZone defaultTimeZone] secondsFromGMT];
    date = [date dateByAddingTimeInterval:ticks];
    // 没有找到更好的方法, 这里只是用当前默认时区相对GMT偏移的秒数加
    // 上去得到一个当前时区的时间表示. 不知道有没有更合适直接的方法来完成.

获取今天的开始时间

NSCalendar 提供了 startOfDayForDate 接口直接完成该功能

NSDate *today = [[NSCalendar currentCalendar] startOfDayForDate:[NSDate date]];
// 相应的, 明天的开始可以在today基础上加上一天的秒数即可
NSDate *tommorror = [today dateByAddingTimeInterval:60.0 * 60.0 * 24.0];