使用NSDateFormatter将NSString与NSDate转换的预期输出偏离

时间:2011-12-22 07:06:34

标签: ios nsstring nsdate nsdateformatter

我使用以下方法将NSString转换为NSDate。

总是当我从String构造NSDate时,日期是我作为输入的一部分提供的当天后面的一天,小时是18:30:00 +0000。为什么偏离我所提供的。我期待与我提供的日期相同,小时为00:00:00 +0000

+(NSDate*)convertStringToNSDate:(NSString*)string withFormat:(NSString*)format{

    // Convert string to date object
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    //[dateFormat setTimeZone:[NSTimeZone localTimeZone]];
    [dateFormat setDateFormat:format];
    NSDate *date = [dateFormat dateFromString:string];  
    [dateFormat release];
    return date;
}

enter image description here

1 个答案:

答案 0 :(得分:2)

这个问题经常出现,但我找不到合适的副本(在电话上搜索没有帮助)。

NSDate代表一个特定的时间点。当您记录NSDate的值时,它以GMT显示,比您的时区晚5.5小时(印度,我假设)。所以价值是正确的。如果您通过日期格式化程序运行该日期,则会再次获得当地的午夜时间,因为日期格式化程序正在使用您的本地时区。