Iphone 从NSDate获取时间返回零
我试图在图表上显示时间,我有一个完整的时间戳,格式是“2012-08-28 18:50:24”。当我尝试从这个日期获取时间时,它在NSDate中返回nilIphone 从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:
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);