美文网首页
NSDate时区转换

NSDate时区转换

作者: Geniune | 来源:发表于2020-07-27 11:59 被阅读0次

1. 获取系统时区的NSDate对象

打印[NSDate date]得到的是GTM时区对应的时间也就是0时区:2020-07-23 03:45:08 +0000
国内是东8区,因此想获取对应地区则需要加入时区进行计算

获取当前系统对应时区:

NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSLog(@"当前系统时区:%@", [zone name]);

打印结果为:当前系统时区:Asia/Shanghai
获取对应Asia/Shanghai时区的NSDate对象,则要加上与GTM时区的差值:

NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate:date];
NSDate *currentZoneDate = [[NSDate date] dateByAddingTimeInterval:interval];
NSLog(@"%@", currentZoneDate);//打印:2020-07-23 11:45:08 +0000

2. 获取前N天的NSDate对象

还可以获取前/后天NSDate对象:

- (NSDate *)transfrom:(NSDate *)date day:(NSInteger)day{

    NSDateComponents *adcomps = [[NSDateComponents alloc] init];
    [adcomps setDay:day];//
    return [[NSCalendar currentCalendar] dateByAddingComponents:adcomps toDate:date options:0];
}

调用:

NSLog(@"今日:%@", date);//打印:2020-07-23 11:45:08 +0000
NSLog(@"昨天:%@", [self transfrom:date day:-1]);//打印:2020-07-22 11:45:08 +0000
NSLog(@"明天:%@", [self transfrom:date day:1]);//打印:2020-07-24 11:45:08 +0000

3. 获取年、月、日、星期

推荐使用:NSCalendar

NSCalendar *calendar = [NSCalendar currentCalendar];

NSDateComponents *components = [Calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitWeekday fromDate:[NSDate date]];

NSArray *weekChineseArr = @[@"日", @"一", @"二", @"三", @"四", @"五", @"六"];

NSLog(@"%zd年", [components year]);
NSLog(@"%zd月", [components month]);
NSLog(@"%zd日", [components day]);
NSLog(@"星期%@", weekChineseArr[[components weekday]]);

//打印:
//2020年
//7月
//23日
//星期四

或者用NSDateFormatter

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];

NSLog(@"%@", [formatter stringFromDate:[NSDate date]]);
//打印:2020-07-22

如果本文对你有所帮助记得点个赞哈

相关文章

  • NSSting 与 NSDate 时间戳 恩怨情仇

    NSSting 转 NSDate NSDate 转 NSString 获取本地 NSDate 时区转换 NSDat...

  • NSDate时区转换

    1. 获取系统时区的NSDate对象 打印[NSDate date]得到的是GTM时区对应的时间也就是0时区:20...

  • NSDate 相关

    NSDate 时间 在经过NSDateFormatter的转换后,会自动的切换时区,显示正确的时间。 转换后的字符...

  • iOS 常用类转换

    NSDate 获取当前日期及时间 [NSDate date]获取的时间是标准时区的时间 转换成系统时间: NSDa...

  • NSDate

    NSDate *date = [NSDate date]; //获取当前0时区时间 NSDate *date = ...

  • NSDate 时区设置 及转换

    先说下自己开发过程中之前迷惑的两点: 1 unix 时间戳使用 p.p1 {margin: 0.0px 0.0px...

  • 8小时时差问题

    //[NSDate date]获取的是GMT时间,下面获得某个时区的系统时间+(NSDate *)getNowDa...

  • iOS 时间格式转换、时间戳排序

    1、时间格式转换 NSString ~ NSDate、 NSString~NSDate - (NSDate *)d...

  • 时间转换

    时间转换 NSString->NSDate NSDate->NSString NSDate->NSTimeInte...

  • 时间戳与日期的相关转化.

    日期转换为时间戳 (日期转换为秒数) NSDate *date = [NSDate date]; NSLog(@"...

网友评论

      本文标题:NSDate时区转换

      本文链接:https://www.haomeiwen.com/subject/dswclktx.html