NSDateformatter将日期转换为字符串

时间:2013-05-02 14:37:00

标签: objective-c nsdate nsdateformatter

我有以下日期和时间2013-04-25 10:42:44 +0000。当我将上述日期转换为字符串时,我得到的输出为2013-04-25 16:12:44。以下是我用来将日期转换为字符串

的代码
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    dateFormatter.timeZone = [NSTimeZone systemTimeZone];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *dateStr= [dateFormatter    stringFromDate:date]];
    NSLog(@"dateStr--%@",dateStr);

3 个答案:

答案 0 :(得分:0)

我想这是一个时区问题。将格式化程序时区设置为GMT:

    dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

答案 1 :(得分:0)

我假设变量date通过[NSDate date]初始化。 也许在下面的主题中相当广泛的答案也有帮助。

Does [NSDate date] return the local date and time?

答案 2 :(得分:0)

一遍又一遍地询问(但很难通过搜索找到)。

当您记录NSDate对象时,您将始终以UTC格式获取日期。这就是当前description NSDate方法的实现方式。

只要您看到的差异可以根据您当地的时区相对于UTC来计算,那么您看到的是正确的和预期的行为。

BTW - 没有理由将日期格式化程序的时区设置为“系统”时区。默认情况下已经完成。对于语言环境也是如此。如果您想要与当前值不同的内容,请仅设置时区或区域设置。