来自NSString的NSDate给出空结果

我正在使用下面的代码来生成NSDate -> NSString

 +(NSString *)getCurrentTime { NSDate *now = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd-MM-yyyy hh:MM:SS a"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; NSString* str =[dateFormatter stringFromDate:now]; [dateFormatter release]; NSLog(@"%@",str); return str; } 

上面的代码中的一切都很好。 我正在使用上面的代码在数据库中存储string。 现在,检索该string给我NULL 。 以下是我的代码以特定格式检索date

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"hh:MM:SS a"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; NSDate *dt =[dateFormatter dateFromString:crdInfo.swipeTime]; NSLog(@"Date : %@",dt); [dateFormatter release]; 

我应该如何检索或存储特定格式? 我的crdInfo.swipeTime正在检索string属性…

由于Narayanabuild议您需要使用与存储格式相同的格式检索date。 检索它如下:

  NSDateFormatter *reDateFormatter = [[NSDateFormatter alloc] init]; [reDateFormatter setDateFormat:@"dd-MM-yyyy hh:MM:SS a"]; [reDateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; NSDate *dt = [reDateFormatter dateFromString:str]; NSLog(@"The Date : %@",dt); [reDateFormatter setDateFormat:@"hh:MM:SS a"]; NSString *currentTime = [reDateFormatter stringFromDate:dt]; NSLog(@"%@",currentTime); 

希望它可以帮助你。

首先,为什么不直接存储NSDate对象或纪元时间戳呢? 这将给你未来更多的灵活性。

现在你的问题,我怀疑这是由于你的NSDateFormatter的configuration,你保存在一种格式,并试图将其转换为使用不同格式的date。 使格式相同,然后重试。 如果你想以不同的方式显示它,你可能需要使用存储的格式将其转换为NSDate,然后再次使用另一个date格式化程序将其作为string以您想要的格式获取。

尝试格式化为dd-MM-yyyy hh:mm:ss a。

你写了dd-MM-yyyy hh:MM:SS a在这里MM中的MM hh:MM:SS给出了这个格式无法识别的月份,并且没有任何要点写upercase SS的秒数

希望你能理解。