从字符串转换时 NSDate 返回 nil

NSDate returning nil when converting from string

我正在尝试从日期字符串中获取一天中的时间。下面的字符串应该 return 12:00AM.

2010-08-24 00:00:00 +0000

但是使用下面的代码,我的 NSDate 对象 return 在到达日志语句时为 nil。这里的问题是什么?谢谢!

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"h:mma"];
NSDate *date = [df dateFromString:@"2010-08-24 00:00:00 +0000"];
NSLog(@"DATE: %@", [date description]);

输出:日期:(空)

试试这个:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"YYYY-MM-dd hh:mm:ss ZZZZ"];
NSDate *date = [df dateFromString:@"2010-08-24 00:00:00 +0000"];
NSLog(@"DATE: %@", [date description]);

干杯!

在操场上测试:

您可以使用以下过程从日期字符串中提取时间

1.Get 给定格式的 NSDate 对象。

2.Set 具有所需格式的 NSDateFormatter 对象。

3.Get 所需格式的日期字符串。

 - (BOOL)application:(UIApplication *)
application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    NSString *date = [self convertDate:@"2010-08-24 00:00:00 +0000"
                            fromFormat:@"yyyy-MM-dd HH:mm:ss ZZZZ"
                              toFormat:@"hh:mm a"];

    NSLog(@"DATE: %@", [date description]);

    return YES;
}


- (NSString *)convertDate:(NSString *)inDateString
             fromFormat:(NSString *)fromFormat
               toFormat:(NSString *)toFormat
{
    NSDateFormatter *dateFormatter = nil;
    NSString *outDateString = nil;
    NSDate *date = nil;

    dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:fromFormat];

    date = [dateFormatter dateFromString:inDateString];

    [dateFormatter setDateFormat:toFormat];
    outDateString = [dateFormatter stringFromDate:date];

    return outDateString;
}