从 NSDate 获取时间返回 nil



我正在尝试在图表上显示时间,并且我有一个完整的时间戳@"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];

最新更新