iOS_OC NSDate / NSString 相互转换

1 时间的获取

  NSDate *date = [NSDate date]; 获取GMT时间。

  NSTimeZone *zone =  [NSTimeZone systemTimeZone]; 获得系统时区

    NSTimeZone *localTime = [NSTimeZone localTimeZone]; 获取本地时区

  NSInteger timeOff = [zone secondsFromGMT]; zone时区和格林尼治时间差

  NSDate *timeOffDate = [date dateByAddingTimeInterval:timeOff]; 时间转换

  注:GMT 0:00 格林威治标准时间; UTC +00:00 校准的全球时间; CCD +08:00 中国标准时间 [来自百度百科]

2 获取当前时间的各种信息

  NSCalendar *calendar = [NSCalendar currentCalendar];

  NSDate *startDate = [NSDate new];

  NSDateComponents *dateComps = [cal components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit fromDate:startDate];

  int year = [dateComps year];

  int month = [dateComps month];

  int day = [dateComps day];

  int hour = [dateComps hour];

  int minute = [dateComps minute];

  int second = [dateComps second];

  NSLog(@"%d-%d-%d-%d-%d-%d",year,month,day,hour,minute,second);   显示的是本地时区的时间

  NSDate *newDate = [cal dateFromComponents:dateComps];    这个时间是GTM时间

  NSRange range = [calendarrangeOfUnit:NSDayCalendarUnitinUnit:NSMonthCalendarUnitforDate:[NSDatedate]];

  NSUInteger numberOfDaysInMonth = range.length;   获取当前月份的天数

3 NSString/NSDate 之间的转换

  NSDateFormatter *dataFormant = [[NSDateFormatter alloc] init];

  [dataFormant setDateFormat: @"yyyy-MM-dd HH:mm:ss.S"];   

  NSString *dateStr = [dataFormant stringFromDate:[NSDate new]]; 显示:2016-10-31 10:21:30.5

  两者之间的转换都用到了了NSDateFormatter,类型差不多,设置好格式后,用stringFromDate或者dateFromString进行转换

  注意:NSString转NSDate时,注意待转换的NSString格式应该和设置的转换格式相同。

  格式化参数如下:
  G: 公元时代,例如AD公元
  yy: 年的后2位
  yyyy: 完整年  
  MM: 月,显示为1-12
  MMM: 月,显示为英文月份简写,如 Jan//跟系统语言版本有关系,中文显示“3月”,英文显示“Jan”

  MMMM: 月,显示为英文月份全称,如 Janualy//跟系统语言版本有关系,中文显示“3月”,英文显示“Jan”

  dd: 日,2位数表示,如02
  d: 日,1-2位显示,如 2
  EEE: 简写星期几,如Sun
  EEEE: 全写星期几,如Sunday
  aa: 上下午,AM/PM
  H: 时,24小时制,0-23
  K:时,12小时制,0-11
  m: 分,1-2位
  mm: 分,2位
  s: 秒,1-2位
  ss: 秒,2位
  S: 毫秒

  

 

原文地址:https://www.cnblogs.com/lizhen24/p/6014961.html