Iphone 从NSDate获取时间返回零

Iphone 从NSDate获取时间返回零,iphone,time,nsdate,nsdateformatter,Iphone,Time,Nsdate,Nsdateformatter,我试图在图表上显示时间,我有一个完整的时间戳,格式是“2012-08-28 18:50:24”。当我尝试从这个日期获取时间时,它在NSDate中返回nil NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"HH:mm:ss"]; NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:

我试图在图表上显示时间,我有一个完整的时间戳,格式是“2012-08-28 18:50:24”。当我尝试从这个日期获取时间时,它在NSDate中返回nil

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"HH:mm:ss"];
    NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:24"];

仅当我更改
[formatter setDateFormat:@“HH:mm:ss”]时,才可以使用此代码行到
[格式化程序setDateFormat:@“yyyy-MM-dd HH:MM:ss”]然后开始使用完整的日期和时间。但我只需要时间

NSDateFormatter用于根据您的要求格式化NSDate。 这里是从字符串中提取日期,因此必须告诉NSDateFormatter查找具有该格式的字符串并将其转换为日期

NSDate同时包含日期和时间,因此如果您只想显示时间,请使用dateformatter从NSDate获取时间组件

iOS在NSDate中一起管理时间和日期。实际上,它们应该一起工作

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];   
   // GET  Proper NSDate 
    NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:24"];        
    //To your requirement
    [formatter setDateFormat:@"HH:mm:ss"];
    NSString *timestr=[formatter stringFromDate:time];
    NSLog(@"%@",timestr);

因为,首先需要将字符串转换为正确格式的
NSDate
,即

[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *aDate = [formatter dateFromString:@"2012-08-28 18:50:24"];
现在,您可以根据需要重新格式化
NSDateFormatter
。现在,您可以从

[formatter setDateFormat:@"HH:mm:ss"];
NSString *newDate = [dateFormatter stringFromDate:aDate];

如果需要从字符串生成日期,则需要相应地设置日期格式

首先创建NSDate对象非常重要!只有这样你才能把时间和整个日期分开

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:24"];
然后

您还可以使用其他字符串连接函数删除日期模块,如

但是,如果您首先有一个NSDate,那么您以前的代码就可以工作了

NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSString *timeStr = [formatter stringFromDate:date];

首先,在日期格式中转换字符串日期和时间

YourTimeStr = @"2012-08-28 18:50:24";  

  NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-mm-dd HH:mm:ss";
    NSDate *DateAndTime = [formatter dateFromString:LogOutTimeSTR];
然后


你有绳子。因此,必须首先按照字符串格式将其转换为日期。之后,您可以将日期转换为任何格式。所以,遵循这个

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:24"];
[formatter setDateFormat:@"HH:mm:ss"];
NSString *str = [formatter stringfromdate:time];
NSLog(@"%@",str);

嘿,亲爱的,只为节省时间使用NSTimeInterval代替NSDate:)我不明白?绘制图表你可以使用NSDate本身为什么要单独寻找时间?@LithuT.V infect我必须根据时间而不是日期绘制为什么需要两个日期格式化程序?您可以使用第一个本身???@LithuT.V first date formate是使用日期字符串值转换的日期。使用后,第二个是使用日期值转换成所需的格式。请看这里您定义了2个DateFormatter-formatter和dateformatter1。这有什么需要?“格式化程序”可用于转换为日期,然后为下一次转换为字符串设置新的格式和时区。这还不够吗?@LithuT.V是的,我知道,但您可以用不同的-2类型编写一个代码,这不是问题。
NSDateFormatter *dateFormatter1 = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter1 setDateFormat:@"HH:mm:ss"];
    [dateFormatter1 setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

    NSString *YourTimeStr =[dateFormatter1 stringFromDate:DateAndTime];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *time = [formatter dateFromString:@"2012-08-28 18:50:24"];
[formatter setDateFormat:@"HH:mm:ss"];
NSString *str = [formatter stringfromdate:time];
NSLog(@"%@",str);
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"hh:mm:ss  a"];
NSString *theTime = [timeFormat stringFromDate:[NSDate date]];    
NSLog(@"time, %@",theTime);