ios - NsDate 格式化程序从字符串中给出错误的日期

标签 ios nsdate nsdateformatter

<分区>

我有以下代码,它接受一个 NSString 并返回 NSDate。我从一个项目中复制了这段代码,它在其中运行得非常好——但是这给了我错误的输出

- (NSDate *)dateFromString:(NSString *)date
{
    static NSDateFormatter *dateFormatter;
    if (!dateFormatter)
    {
        dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    }

    NSLog(@"Date: %@ Formatted: %@",date,[dateFormatter dateFromString:date]);

    return [dateFormatter dateFromString:date];
}

输出来自日志:

Date: 07-01-2014 Formatted: 2014-01-06 18:30:00 +0000
Date: 24-01-2014 Formatted: 2014-01-23 18:30:00 +0000
Date: 06-01-2014 Formatted: 2014-01-05 18:30:00 +0000
Date: 15-01-2014 Formatted: 2014-01-14 18:30:00 +0000
Date: 22-01-2014 Formatted: 2014-01-21 18:30:00 +0000
Date: 31-01-2014 Formatted: 2014-01-30 18:30:00 +0000
Date: 14-01-2014 Formatted: 2014-01-13 18:30:00 +0000
Date: 30-01-2014 Formatted: 2014-01-29 18:30:00 +0000

奇怪的是它也在改变日期..!! 任何帮助...!!!

最佳答案

结果格式为 GMT 输出 - 即,如果您距离 GMT 有 5:3 小时。

如果要在该时区返回格式化的日期,则需要指定时区:(这就是 +0000 的意思)

- (NSDate *)dateFromString:(NSString *)date
{
    static NSDateFormatter *dateFormatter;
    if (!dateFormatter)
    {
        dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
        [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    }

    NSLog(@"Date: %@ Formatted: %@",date,[dateFormatter dateFromString:date]);

    return [dateFormatter dateFromString:date];
}

关于ios - NsDate 格式化程序从字符串中给出错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21180922/

相关文章:

iphone - 选项卡推送通知 cocos2d 游戏崩溃

ios - 在应用于单元格之前未设置自定义 Collection View 布局属性

ios - 在 Swift 中使用 NSDate 组件

swift - 让这个 DateFormatter 工作需要什么?

ios - 将通用 NSString 转换为 NSDate 的预定义方法

ios - NEHotspotConfigurationErrorDomain Code=5 "invalid EAP settings."

ios - 在 UIButton 单击上添加多个 UITextField

ios - 从佛教日历转换为公历日期格式时 NSDateFormatter 行为不正确

ios - 具有相同日期值和相同散列的两个NSD如何不相等?

ios - 日期选择器显示与选择时不同的日期(晚 1 天)