#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
// 1: 获取当前时间
NSDate * date = [NSDate date];
//获取的是 0时区的值, 北京是东8区, 需要在当前时间+8, 才能得到正确的北京时间
NSLog(@"%@", date);
// 获取时区
NSTimeZone * zone = [NSTimeZone systemTimeZone];
NSLog(@"%@", zone);
// 获取时间间隔...28800秒,
NSInteger interValue = [zone secondsFromGMTForDate:date];
NSLog(@"%lu", interValue);
// 重新生成 本地时间
NSDate * localDate = [date dateByAddingTimeInterval:interValue];
NSLog(@"%@", localDate);
//************************ stone ***
// 2: 格式化显示时间 ---> 直接显示成东8区的了...
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
// yyyy-MM-dd ---> 固定格式 ; HH:mm:ss ---> HH是24小时制 hh是12小时制
[formatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
NSLog(@"%@", [formatter stringFromDate:date]);
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString * dateStr = [formatter stringFromDate:date];
NSLog(@"%@", dateStr);
//************************ stone ***
// 计算明天的此刻
// 方法1: dateByAddingTimeInterval 参数是 秒, 注意
NSDate * tom = [NSDate date];
NSLog(@"%@", tom);
tom = [tom dateByAddingTimeInterval:24 * 60 * 60];
NSLog(@"%@", tom);
// 方法2: dateWithTimeIntervalSinceNow 从现在开始 后面参数是多久之后...返回 NSDate
NSTimeInterval oneDayTime = 24 * 60 * 60;
NSDate * tom1 = [NSDate dateWithTimeIntervalSinceNow:oneDayTime];
// 记得一定要格式输出, 不然是 0区的时间.
NSLog(@"tomorrow now time = %@", [formatter stringFromDate:tom1]);
//************************ stone ***
// 计算昨天的此刻
NSDate * tom2 = [NSDate dateWithTimeIntervalSinceNow:-oneDayTime];
// 记得一定要格式输出, 不然是 0区的时间.
NSLog(@"yesterday now time = %@", [formatter stringFromDate:tom2]);
// 过时的方法, 不推荐使用...
NSDate * tom3 = [date addTimeInterval:-oneDayTime];
NSLog(@"%@", tom3);
//************************ stone ***
// NSCalendar 日期类, 快速获取 年月日 时分秒 信息
NSDate * date1 = [NSDate date];
NSCalendar * cal = [NSCalendar currentCalendar];
// 时间又被 自动转化成本地时间了, 是东8区的,
NSDateComponents * com = [cal components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:date1];
NSLog(@"%ld %ld %ld %ld %ld %ld", com.year, com.month, com.day, com.hour, com.minute, com.second);
NSLog(@"%@", cal);
//************************ stone ***
// 获取两个时间的时间差
NSString * time1 = @"2015-04-08 20:50:40";
NSString * time2 = @"2014-04-04 18:45:30";
NSDateFormatter * fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate * dateA = [fmt dateFromString:time1];
NSDate * dateB = [fmt dateFromString:time2];
int unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents * comps = [[NSCalendar currentCalendar] components:unit fromDate:dateB toDate:dateA options:0]; // options参数起什么作用...不知道
NSLog(@"相差%ld年%ld月%ld日%ld小时%ld分钟%ld秒", comps.year, comps.month, comps.day, comps.hour, comps.minute, comps.second);
}
return 0;
}
NSDate的使用... components:
最新推荐文章于 2023-04-20 16:57:29 发布