1 // 纯数字日期 2 NSString *str1 = @"20150611132535"; 3 // 日期字符串 4 NSString *str2 = @"2015/05/12 10:22:01"; 5 // 带时区的日期字符串 6 NSString *str3 = @"Tue Sep 06 21:37:19 +0800 2015"; 7 // 不带时区的日期字符串 8 NSString *str4 = @"Tue Sep 05 21:15:27 2015"; 9 // 格林尼治时间 10 NSString *str5 = @"Wed, 4 Nov 2015 03:25:31 GMT"; 11 12 // 创建日期格式化对象 13 NSDateFormatter *format = [[NSDateFormatter alloc] init]; 14 // 设置地区 15 [format setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 16 17 // str1 18 [format setDateFormat:@"yyyyMMddHHmmss"]; 19 NSDate *date1 = [format dateFromString:str1]; 20 NSLog(@"%@", date1); 21 22 // str2 23 [format setDateFormat:@"yyyy/MM/dd HH:mm:ss"]; 24 // [format setDateFormat:@"yyy/MM/d h:m:ss"]; 25 // [format setDateFormat:@"yyyy/MM/dd H:m:ss"]; 26 NSDate *date2 = [format dateFromString:str2]; 27 NSLog(@"%@", date2); 28 29 // str3 30 // 以下方法在iOS8以后貌似会出现问题,所以另外补充一种使用C语言格式日期方法 31 [format setDateFormat:@"EEE MMM dd HH:mm:ss zzz yyyy"]; 32 NSDate *date3 = [format dateFromString:str3]; 33 NSLog(@"%@", date3); 34 35 struct tm sometime; 36 const char *formatString = "%a %b %d %H:%M:%S %z %Y"; 37 strptime([str3 UTF8String], formatString, &sometime); 38 date3 = [NSDate dateWithTimeIntervalSince1970:mktime(&sometime)]; 39 NSLog(@"%@", date3); 40 41 // str4 42 [format setDateFormat:@"EEE MMM dd HH:mm:ss yyyy"]; 43 NSDate *date4 = [format dateFromString:str4]; 44 NSLog(@"%@", date4); 45 46 // str5 47 NSDateFormatter *formatGMT = [[NSDateFormatter alloc] init]; 48 // 设置时间地区 49 [formatGMT setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 50 [formatGMT setDateFormat:@"EEE, dd MMM yyy HH:mm:ss zzz"]; 51 NSDate *date5 = [formatGMT dateFromString:str5]; 52 NSLog(@"%@", date5);
定义函数 | 函数说明 | 函数返回值 |
time_t mktime(struct tm *timeptr); |
将时间结构数据转换成经过的秒数。 mktime() 用来将参数timeptr所指的tm结构数据转换成从公元 1970年1月1日 0时0分0秒 算起至今的UTC时间所经过的秒数。 |
返回经过的秒数 |
char *strptime(const char *buf, const char *format, struct tm *timeptr); |
strptime是将一个字符串格式化为一个tm结构类型 |
返回没有被格式化的日期字符串 |
+ (id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs; |
返回以1970/01/01 GMT为基准,然后经过了secs秒的时间 |
NSDate 日期对象 |
时间: 2024-08-28 23:21:11