Dateformatter从字符串获取日期

时间:2012-08-21 10:21:08

标签: iphone objective-c xcode ipad nsdateformatter

我的字符串是这样的,2012-12-08 17:00:00.0。现在我尝试使用NSDate格式化程序从此字符串中检索日期。我的代码是

NSDateFormatter *df=[[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-dd-MM hh:mm:ss"]; 
NSDate *date1 = [df dateFromString:@"2012-12-08 17:00:00.0"];
NSLog(@"%@ %@",date1);
[df release];

但我所得到的只是零价值。

我已尝试过几种类型的日期格式,例如yyyy/mm/dd hh:mm:ssYYYY-DD-MM HH:MM:SS ..但仍然没有用..任何建议都将受到赞赏。

4 个答案:

答案 0 :(得分:1)

假设您错误地在帖子中放了一个空字符串文字并且您的实际日期与帖子中描述的相同,则需要使用HH代替hh来解析24小时内小时制。您还需要将.S添加到格式字符串中以解析时间字符串的最后一个零:

NSDateFormatter *df=[[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-dd-MM HH:mm:ss.S"];
//                 here -------^^       ^------ and here
NSDate *date1 = [df dateFromString:@"2012-12-08 17:00:00.0"];
NSLog(@"%@",date1);

这会产生预期的输出(小时差异是由于时区差异):

2012-08-12 21:00:00 +0000

答案 1 :(得分:1)

秒后有一段持续时间间隔,而且你在dateformatter输入中错过了strDate。

NSString *strDate = @"2012-12-08 17:00:00.0";
NSDateFormatter *df=[[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-dd-MM hh:mm:ss.S"]; 
NSDate *date = [df dateFromString:strDate];// formatter format
NSLog(@"%@ %@",date);
[df release];

答案 2 :(得分:0)

这样做:

NSString *strDate = @"2012-12-08 17:00:00.0";
NSDateFormatter *df=[[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-dd-MM HH:mm:ss.S"]; 
NSDate *date1 = [df dateFromString:strDate];// forgot to add valid string for according to date formatter format
NSLog(@"%@",date1);
[df release];

答案 3 :(得分:0)

NSDateFormatter *dateformat=[[NSDateFormatter alloc]init];
[dateformat setDateFormat:@"dd/MM/yyyy hh:mm:ss"];
NSDate *today = [NSDate date];
NSString *currentDate=[dateformat stringFromDate:today];
NSLog(@"PrintToday Date is %@ ",currentDate);

NSDate * date1 = [df dateFromString:@“”];

您需要在上一行中传递字符串