2012-10-04 42 views
2

我想在图上显示时间,并且在这个@“2012-08-28 18:50:24”格式中有一个完整的时间戳。当我尝试从这个日期获得时间,然后它返回NSDate中的零。从NSDate获取时间返回零

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"];然后,它开始以饱满的日期和时间的工作。但我只需要时间

+0

但是'NSDate'是日期... – Nekto

+0

哎为只保存时间使用NSTimeInterval亲爱insted的的NSDate的.. :) –

+0

我不明白吗?绘制的图表,你可以使用NSDate的本身为什么要单独寻找时间? –

回答

1

首先,你必须转换您的字符串日期和时间日期甲..

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]; 
+0

为什么需要2个日期格式化程序?你可以使用第一个本身? –

+0

@ LithuT.V首日日期格式是使用转换日期的日期字符串值。使用后第二种是使用日期值转换所需的合成。 –

+0

在这里看到你正在定义2个dateformatters格式和dateformatter1.那是什么需要? “格式化程序”可用于转换为日期和之后的目的,并将其设置为新的格式和时区,以便下一次转换为字符串。不足够吗? –

2

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); 
2

因为,首先您需要将字符串转换为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]; 
2

得到的时间。如果你需要从生产日期字符串,那么你就需要设置相应的日期格式。

这很重要,您先创建一个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]; 

您也可以使用其他字符串连接功能,但去掉日期模块一样this.

,如果您第一次有一个NSDate,那么你前面的代码会工作。

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

u有串。所以你必须首先根据你的字符串格式将它转换为日期。之后您可以将日期转换为任何格式。所以按照这个。

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); 
2
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init]; 
[timeFormat setDateFormat:@"hh:mm:ss a"]; 
NSString *theTime = [timeFormat stringFromDate:[NSDate date]];  
NSLog(@"time, %@",theTime);