NSDateFormatter未正确格式化

时间:2013-02-05 10:31:05

标签: iphone ios objective-c nsdate nsdateformatter

我认为我以错误的方式使用NSDateFormatter。我有一个UIDatePicker。当我选择日期时,会设置我的日期标签,月份标签,年份标签和时间标签。

当我点击保存按钮时,我使用此标签建立日期并将其发送到我的服务器。 我是这样做的。

 NSString *dateStringBegin = [NSString stringWithFormat:@"%@ %@ %@ %@",lblBeginDay.text,lblBeginMonth.text,lblBeginYear.text,lblBeginTime.text];

//LOG dateStringBegin =  7 februari 2013 11:21

但是我的服务器只接受一个类似于2013-02-07 11:21

的字符串

现在我在代码中这样做。

 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"d MMMM YYYY hh:mm"];
    NSDate* date = [dateFormat dateFromString:dateStringBegin];

    NSDateFormatter *dateFormat2 = [[NSDateFormatter alloc] init];
    [dateFormat2 setDateFormat:@"YYYY-MM-dd HH:mm"];
    NSString *dateStringBegin2 =  [dateFormat2 stringFromDate:date];

现在,当我看看dateStringBegin2的样子时,我看到了这一点。

//LOG dateStringBegin2 = 2013-12-28 11:21

3 个答案:

答案 0 :(得分:0)

更改:

[dateFormat setDateFormat:@"d MMMM YYYY hh:mm"];
[dateFormat2 setDateFormat:@"YYYY-MM-dd HH:mm"];

致:

[dateFormat setDateFormat:@"d MMMM yyyy hh:mm"];
[dateFormat2 setDateFormat:@"yyyy-MM-dd HH:mm"];

问题在于,yyyy用于指定年份组件。使用YYYY是一个常见的错误。 yyyy指定日历年,而YYYY指定ISO年度日历中使用的年份(“年度周”)。在大多数情况下,yyyy和YYYY会产生相同的数字,但它们可能会有所不同。通常,您应该使用日历年。

答案 1 :(得分:0)

检查此代码: -

NSString *dateStringBegin = @"7 february 2013 11:21";
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"dd MMMM yyyy hh:mm"];
    NSDate* date = [dateFormat dateFromString:dateStringBegin];

    NSDateFormatter *dateFormat2 = [[NSDateFormatter alloc] init];
    [dateFormat2 setDateFormat:@"yyyy-MM-dd HH:mm"];
    NSString *dateStringBegin2 =  [dateFormat2 stringFromDate:date];
    NSLog(@"Date : %@",dateStringBegin2);

希望它可以帮助你..

答案 2 :(得分:0)

将日期格式更改为

[dateFormat2 setDateFormat:@"yyyy-MM-dd HH:mm"];