字符串中的日期在iOS中不起作用

时间:2013-06-12 09:08:45

标签: ios nsdate nsdateformatter

我正在使用以下代码。每次我获得日期的空值。

NSString *dateStr = @"06/10/2013";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd, YYYY"];
NSDate *date = [dateFormat dateFromString:dateStr];
NSLog(@"date %@",date);

3 个答案:

答案 0 :(得分:2)

您传递的格式错误。 NSDateFormatter使用date format patterns from UNICODE。所以纠正格式,并将正常工作。在这里你可以试试这个:

NSString *dateStr = @"06/10/2013";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/YYYY"];
NSDate *date = [dateFormat dateFromString:dateStr];
NSLog(@"date %@",date);

此外,还要更好地了解Apple's Date Formatting guide

修改 我从你的一些评论中发现,你要做的是改变格式,但你的问题并不意味着。如果您尝试更改格式,则需要在将dateformatter格式设置为所需格式后将其转换回NSString。将其添加到底部并检查:

[dateFormat setDateFormat:@"MMM, dd,yyyy"];
NSString *dateStrinfFormated = [dateFormat stringFromDate:date];
NSLog(@"Date in required format: %@",dateStrinfFormated);

答案 1 :(得分:2)

从您的date format获取一些有效的NSString,然后重新转换,以获得您想要的输出,

NSString *dateStr = @"06/10/2013";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy"];
NSDate *validDate = [dateFormat dateFromString:dateStr];
NSLog(@"Valid Date %@",validDate);             // 2013-06-09 18:30:00 +0000
[dateFormat setDateFormat:@"MMM, dd,yyyy"];
NSString *str = [dateFormat stringFromDate:validDate];
NSLog(@"Result String %@",str);               // Jun, 10,2013

答案 2 :(得分:0)

[dateFormat setDateFormat:@"MM/dd/yyyy"];