将日期的NSString转换为NSDate

时间:2010-12-02 06:31:06

标签: iphone objective-c nsdate nsdateformatter

这可能是一个愚蠢的问题,但我似乎无法在此处或文档中找到答案。

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

我知道使用NSDateFormatter,但问题是

  1. 月份可能是一两位数
  2. 同样,日期可以是一个或两个数字
  3. 小时数可以是一位或两位数
  4. 我该怎么办AM / PM?

3 个答案:

答案 0 :(得分:26)

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

2位数或2位数月没有问题。

这必须帮助你。

答案 1 :(得分:3)

您可以使用NSString课程将NSDate解析为NSDateFormatter。有关详细信息,请参阅the documentation

  

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

答案 2 :(得分: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];