收藏iosiOS 开发 移动开发

iOS的NSString * 与 NSDate *的日期转换处

2016-07-16  本文已影响16605人  打电话记错号码的人

作品链接:http://www.jianshu.com/users/1e0f5e6f73f6/top_articles

1.NSString *转 NSDate *

方法1.中国时间格式

// 时间字符串

NSString *string = @"2016-7-16 09:33:22";

// 日期格式化类

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

// 设置日期格式 为了转换成功

format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

// NSString * -> NSDate *

NSDate *data = [format dateFromString:string];

NSString *newString = [format stringFromDate:data];

方法2.混杂格式

// 时间字符串

NSString *string = @"7月-16/2016 09:33:22秒";

// 日期格式化类

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

// 设置日期格式 为了转换成功

format.dateFormat = @"MM月-dd-yyyy HH:mm:ss秒";

NSLog(@"%@",[format dateFromString:string]);

方法3.国际时间格式

// 时间字符串

NSString *string = @"Tue May 31 17:46:55 +0800 2016 ";

// 日期格式化类

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

// 设置日期格式 为了转换成功

format.dateFormat = @"EEE-MMM-dd HH:mm:ss Z yyyy";

//设置语言区域(因为这种时间是欧美常用时间)

format.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

方法4.时间戳格式

// 时间戳 : 从1970年1月1号 00:00:00开始走过的毫秒数

NSString *string = @"1287879863267";

// 获得有多少秒

NSTimeInterval second = string.longLongValue / 1000.0;

// 时间戳->NSDate

NSDate *date = [NSDate dateWithTimeIntervalSince1970:second];

1.NSDate *转 NSString *

方法1.datatostring

NSDate *date = [NSDate date];

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

format.dateFormat = @"yyyy年MM月dd号 HH:mm:ss";

NSString *string = [format stringFromDate:date];

方法1.datatostring

方法2.获取元素

NSString *string = @"016-07-16 21:16:26";

NSString *month = [string substringWithRange:NSMakeRange(5, 2)];

方法2.获取元素

方法3.利用NSCalendar处理日期获取元素

NSString *string = @"2016-7-16 09:33:22";

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

format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *data = [format dateFromString:string];

//利用NSCalendar处理日期

NSCalendar *calendar = [NSCalendar currentCalendar];

NSInteger mouth = [calendar component:NSCalendarUnitMonth fromDate:data];

NSInteger hour = [calendar component:NSCalendarUnitHour fromDate:data];

NSInteger minute = [calendar component:NSCalendarUnitMinute fromDate:data];

NSInteger second = [calendar component:NSCalendarUnitSecond fromDate:data];

方法3.利用NSCalendar处理日期获取元素

方法4 获取多位元素

NSString *string = @"2016-7-16 09:33:22";

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

format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *date = [format dateFromString:string];

//利用NSCalendar处理日期

NSCalendar *calendar = [NSCalendar currentCalendar];

NSCalendarUnit unit = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitSecond|NSCalendarUnitMinute;

NSDateComponents *components = [calendar components:unit  fromDate:date];

NSLog(@"%@",components);

方法4 获取多位元素

3.时间比较

方法1.时间比较

// 时间字符串

NSString *createdAtString = @"2015-11-20 11:10:05";

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

format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *createdAtDate = [format dateFromString:createdAtString];

// 手机当前时间

NSDate *nowDate = [NSDate date];

/**

NSComparisonResult的取值

NSOrderedAscending = -1L, // 升序, 越往右边越大

NSOrderedSame,  // 相等

NSOrderedDescending // 降序, 越往右边越小

*/

// 获得比较结果(谁大谁小)

NSComparisonResult result = [nowDate compare:createdAtDate];

if (result == NSOrderedAscending) { // 升序, 越往右边越大

NSLog(@"createdAtDate > nowDate");

} else if (result == NSOrderedDescending) { // 降序, 越往右边越小

NSLog(@"createdAtDate < nowDate");

} else {

NSLog(@"createdAtDate == nowDate");

}

方法1.时间比较

方法2.时间比较时间相差多少

// 时间字符串

NSString *createdAtString = @"2016-7-16 09:33:22";

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

format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *createdAtDate = [format dateFromString:createdAtString];

// 手机当前时间

//NSDate *nowDate = [NSDate date];

// 获得createdAtDate和nowDate的时间间隔(间隔多少秒)

//NSTimeInterval interval = [nowDate timeIntervalSinceDate:createdAtDate];

NSTimeInterval interval = [createdAtDate timeIntervalSinceNow];

时间比较时间相差多少

方法3.时间比较两个时间比较

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

format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSString *createdAtString = @"2016-7-16 09:33:22";

NSDate *createdAtDate = [format dateFromString:createdAtString];

// 其他时间

NSString *otherString =@"2016-7-16 21:53:22";

NSDate *otherDate = [format dateFromString:otherString];

// 获得NSCalendar

NSCalendar *calendar = nil;

if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {

calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];

}else{

calendar = [NSCalendar currentCalendar];

}

// 获得日期之间的间隔

NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

NSDateComponents *components = [calendar components:unit fromDate:createdAtDate toDate:otherDate options:0];

NSLog(@"%@",components);

时间比较两个时间比较

方法4.与当前时间比较是否为同一天

if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {

calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];

}else{

calendar = [NSCalendar currentCalendar];

}

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

format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSLog(@"%zd",[calendar isDateInToday:[format dateFromString:@"2016-7-16 09:33:22"]]);

方法4.与当前时间比较是否为同一天
上一篇下一篇

猜你喜欢

热点阅读