从一个string创build一个NSDate
我有这样的NSString
: @"3/15/2012 9:15 PM"
,我想将其转换为NSDate
,我已经这样做了:
NSString *str =@"3/15/2012 9:15 PM"; NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"mm/dd/yyyy HH:mm"]; NSDate *date = [formatter dateFromString:]; NSLog(@"%@", date); // date = null
你能帮我吗,谢谢。
使用以下解决scheme
NSString *str = @"3/15/2012 9:15 PM"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"MM/dd/yyyy HH:mm a"; NSDate *date = [formatter dateFromString:str]; NSLog(@"%@", date);
编辑:对不起,格式应该如下:
formatter.dateFormat = @"MM/dd/yyyy hh:mm a";
显示的时间将是GMT时间。 所以,如果你添加/减去时区,那将是9:15 PM。
编辑:#2
使用如下。 你会得到确切的时间。
NSString *str = @"3/15/2012 9:15 PM"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"MM/dd/yyyy hh:mm a"; NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; formatter.timeZone = gmt; NSDate *date = [formatter dateFromString:str]; NSLog(@"%@",date);
你的格式化程序是错误的。 根据NSDateFormatter文档,它应该是“MM / dd / yyyy h:mm a”。 您也可能想要按date格式指导中所述设置区域设置:
如果您使用的是固定格式date,则应首先将date格式程序的语言环境设置为适合您固定格式的内容。 在大多数情况下,最好的语言环境是en_US_POSIX,这个语言环境专门devise用来产生美国英语结果,而不pipe用户和系统偏好。
尝试这个:
NSString *str = @"3/15/2012 9:15 AM"; NSLocale *enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]; NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setLocale:enUSPOSIXLocale]; [formatter setDateFormat:@"MM/dd/yyyy h:mm a"]; NSDate *date = [formatter dateFromString:str]; NSLog(@"%@",date);
输出:
2012-03-19 12:37:27.531 Untitled[6554:707] 2012-03-15 08:15:00 +0000
嗯 – 出于几个原因你出错了
- NSDateFormatter是严格的,你没有。
- 你没有提供str dateFromString:
NSString* str = @"3/15/2012 9:15 PM"; NSDateFormatter* formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"MM/dd/yyyy HH:mm a"]; NSDate* date = [formatter dateFromString:str]; NSLog(@"%@",date);
NSString *str =@"3/15/2012 9:15 PM"; NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init]; [dateformatter setDateFormat:@"MM/dd/yyyy"]; NSArray *firstSplit = [str componentsSeparatedByString:@" "]; NSDate *dateSelected = [dateformatter dateFromString:[firstSplit objectAtIndex:0]]; [dateformatter setDateFormat:@"mm:ss"]; NSDate *dateSelected2 = [dateformatter dateFromString:[firstSplit objectAtIndex:1]]; NSLog(@"%@",[dateformatter stringFromDate:dateSelected2]); NSLog(@"%@",[dateformatter stringFromDate:dateSelected]);