2015-06-26 31 views
0

我需要一个来自NSDate的NSString,我只需要小时,分钟和秒。 如果是下午一时四十分30秒我需要的字符串为“134030”如何获得不带分隔符的格式化小时字符串?

NSDateFormatter *userTimeFormatter = [[NSDateFormatter alloc] init]; 
[userTimeFormatter setDateFormat:@"HHmmss"]; 

这是行不通的。如果我使用格式hhmmss它似乎工作,但它不是24小时格式。 有什么建议吗? 可能与语言环境有关?

+0

除了没有实际调用'stringFromDate'什么是不工作呢? –

+0

time:3:49:16 pm ...为什么那里的分隔符是... – user426132

+0

'hh'或'HH'是一个很大的区别。 'hh'是'12h格式','HH'是'24h格式' – Jasper

回答

0

试过这种

NSDateFormatter *userTimeFormatter = [[NSDateFormatter alloc] init]; 
[userTimeFormatter setDateFormat:@"HHmmss"]; 

NSLog(@"%@",[userTimeFormatter stringFromDate:[NSDate date]]); 

,它工作正常。

0
NSDateFormatter *dtFormatter=[[NSDateFormatter alloc]init]; 
[dtFormatter setDateFormat:@"hh:mm:ss a"]; 
NSDate *date=[dtFormatter dateFromString:"1:40:30 PM"]; 


[dtFormatter setDateFormat:@"HHmmss"]; 
NSString *dateString=[dtFormatter stringFromDate:date]; 
+0

不起作用... 2015-06-26 14:15:54.483 asas [7634:3405196] aaa 1:40:30 pm .... – user426132

+2

此行为的原因是Locale,请设置正确的Locale,Set你的NSDateFormatter的本地en_US_POSIX将解决这个问题。它适用于24小时制和12小时制。 – user426132

1

这样做的原因行为是区域设置,设置正确的语言环境,设置本地的NSDateFormatter到en_US_POSIX将解决这个问题。它适用于24小时制和12小时制。

NSDateFormatter *userTimeFormatter = [[NSDateFormatter alloc] init]; 
     [userTimeFormatter setDateFormat:@"HHmmss"]; 
     NSLocale *en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
     [userTimeFormatter setLocale:en_US_POSIX]; 

     NSLog(@"time:%@",[userTimeFormatter stringFromDate:userTime]); 
相关问题