从String转换日期

时间:2014-06-27 07:40:16

标签: ios objective-c nsdate nsdateformatter

在我的代码中,我从服务器获取一个字符串,值为" 06-27-2014",然后我想转换为其他日期格式,但我得到的最终结果是非常不同的。这是我正在使用的代码。

        NSString* dateVal = @"06-27-2014";

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"mm-dd-yyyy"];
        NSTimeZone *gmtZone = [NSTimeZone systemTimeZone];
        [dateFormatter setTimeZone:gmtZone];

        NSDate* aDate = [dateFormatter dateFromString:**dateVal**];
           I am getting the aDate as **2014-01-26 18:36:00 +0000** here the month is completely changing to first month from 6th. 

        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateStyle:NSDateFormatterShortStyle];

        NSDate *theDateSelected =aDate;

        NSString *theDate = [dateFormat stringFromDate:theDateSelected];

我得到的最后日期是 27/01/14 ,这完全不同任何人都可以建议正确的日期格式。

3 个答案:

答案 0 :(得分:5)

您的日期格式错误,月份应为MMmm用于分钟。

[dateFormatter setDateFormat:@"mm-dd-yyyy"];

应该是

[dateFormatter setDateFormat:@"MM-dd-yyyy"];

答案 1 :(得分:2)

在这里,您的日期格式化程序值似乎是错误的。

    NSString* dateVal = @"06-27-2014";

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MM-dd-yyyy"];
    NSTimeZone *gmtZone = [NSTimeZone systemTimeZone];
    [dateFormatter setTimeZone:gmtZone];

    NSDate* aDate = [dateFormatter dateFromString:dateVal];// Now here you will get date like "06-27-2014", and mm is for minutes, you should use MM for month.

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateStyle:NSDateFormatterShortStyle];

    NSDate *theDateSelected =aDate;

    NSString *theDate = [dateFormat stringFromDate:theDateSelected];

答案 2 :(得分:0)

您的格式字符串错误。

[dateFormatter setDateFormat:@"MM-dd-yyyy"];

m是分钟, M是一个月。

始终要求date format patterns参考; - )