来自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;
}

在上面的代码中一切都很好。我使用上面的代码在数据库中存储字符串。现在,当检索字符串时,我得到了NULL。以下是我的代码,以特定格式检索日期

    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。

首先,为什么不直接存储NSDate对象或epoch时间戳?这将给你以后更大的灵活性。

现在到你的问题,我怀疑这是由于你的NSDateFormatter的配置,你保存它在一种格式,并试图将其转换为使用不同格式的日期。使格式相同,然后重试。如果你想以不同于存储的方式显示它你可能需要用存储的格式把它转换成NSDate然后再用另一个日期格式化器把它变成你想要的格式它是一个字符串。

正如Narayana建议的那样,您需要以与存储的格式相同的格式检索日期。按如下方式检索:-

    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);

希望对你有帮助。

尝试将其格式化为dd-MM-yyyy hh:mm:ss a.

你写了dd-MM-yyyy hh:MM:SS a,而hh:MM:SS中的MM给出了月,这在这种格式中是无法识别的,并且没有必要写大写SS为秒

希望你能理解

最新更新