我正在尝试在图表上显示时间,并且我有一个完整的时间戳@"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"];
行更改为 [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
时,它才开始使用完整的日期和时间。但我只需要 time
字符串. 因此,您必须首先按照字符串格式将其转换为日期。 之后,您可以将日期转换为任何格式。 所以遵循这个。
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 用于根据您的要求格式化您的 NSDate。 在这里,您正在从字符串中获取日期,因此您必须告诉NSDateFormatter查找具有该格式的字符串并将其转换为日期
NSDate 包含日期和时间,因此,如果您只想显示时间,请使用日期格式化程序从 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);
<</div>
div class="one_answers"> 因为,首先您需要将字符串转换为正确的格式的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"];
然后
[formatter setDateFormat:@"HH:mm:ss"];
NSString *timeStr = [formatter stringFromDate:time];
您还可以使用其他字符串连接函数来删除日期模块,如下所示。
但是,如果您首先具有 NSDate,那么您以前的代码将起作用。
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSString *timeStr = [formatter stringFromDate:date];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"hh:mm:ss a"];
NSString *theTime = [timeFormat stringFromDate:[NSDate date]];
NSLog(@"time, %@",theTime);
首先,您以日期格式转换了字符串日期和时间。
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 *dateFormatter1 = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter1 setDateFormat:@"HH:mm:ss"];
[dateFormatter1 setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSString *YourTimeStr =[dateFormatter1 stringFromDate:DateAndTime];