在iOS中没有从字符串中获取正确的日期

时间:2013-07-09 15:31:34

标签: ios objective-c nsdate nsdateformatter

我正试图从按钮获取日期“30/06/2013”​​:

我尝试了这段代码,但我收到了日志:2013-01-04 22:00:00 +0000:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/YYYY"];

NSDate *date = [formatter dateFromString:dateBtn.titleLabel.text];
NSLog(@"date %@",date);

在应用程序中我得到了这个日期“05/01/2013”​​:

我也试过这段代码,但它不起作用:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"he_IL"];
[dateFormat setLocale:locale];
[dateFormat setDateFormat:@"dd/MM/YYYY"];
NSTimeInterval interval = 5 * 60 * 60;
NSDate *date1 = [dateFormat dateFromString:dateBtn.titleLabel.text];
date1 = [date1 dateByAddingTimeInterval:interval];

重要的是要注意我使用的是语言环境希伯来文。

2 个答案:

答案 0 :(得分:2)

看看Apple's official documentation on date formatters。请注意不同平台和版本的格式略有不同。

还要注意yyyy和YYYY之间的区别。

答案 1 :(得分:2)

将日期格式设置为" dd / MM / yyyy"

    NSString *originalDate = @"30/06/2013";
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd/MM/yyyy"];

    NSDate *date = [formatter dateFromString:originalDate];
    NSLog(@"date %@",date);

来自@fzwo apple链接的解释

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