2010-12-02 103 views
10

这可能是一个愚蠢的问题,但我似乎无法在此处或在文档中找到答案。将日期的NSString转换为NSDate

我想将一个NSString如@“9/22/2010 3:45 PM”转换为一个NSDate。

我知道使用NSDateFormatter,但问题是

  1. 月份可能是一个或两个数字
  2. 同样,日期可能是一个或两个数字
  3. 时间可能是一个或两个数字
  4. 上午/下午我该怎么办?

回答

26
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"MM/dd/yyyy h:mm a"]; 
NSDate *date = [dateFormat dateFromString:dateStr]; 
[dateFormat release]; 

有2位数的日或2位数月份没有问题。

这必须帮助你。

+0

这应该工作。不要忘记发布`dateFormat`。 – 2010-12-02 07:05:28

3

您可以使用NSDateFormatter类将NSString解析为NSDate类。更多信息请参见the documentation

NSDateFormatter的实例创建NSDate的(和NSCalendarDate)对象的字符串表示,和日期和时间的文本表示转换成NSDate的对象。

2

我有同样的问题,不知道为什么NSDateFormatter不工作,我(的iOS5 - Xcode的4.3.2),但是这个工作我出去:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSString *dateString = @"05-06-2012"; 
NSDate *date; 
NSError *error = nil; 
if (![dateFormatter getObjectValue:&date forString:dateString range:nil error:&error]) { 
    NSLog(@"Date '%@' could not be parsed: %@", dateString, error); 
} 
[dateFormatter release];