2012-07-23 3 views
45

NSDateFormatter를 사용하여 iPhone 앱에서 작업하고 있습니다. "00:00:00", "16:00:00","15:30:00" and so on처럼 웹 서비스에서 시간을 얻고 있습니다. 시간이 "00:00:00" to "12 AM" 인 경우이 시간을 으로 변환하고, 시간이 "15:30:00"에서 "3.30PM"이면 "16:00:00" to "4 PM"이면이 시간을 변환해야합니다. 나는 이것에 아래의 코드를 사용했지만 패스했을 때 "16:00:00" the date returns null.오전/오후 형식으로 시간을 얻는 방법 iphone NSDateFormatter?

NSString *dats1 = @"16:00:00"; 
NSDateFormatter *dateFormatter3 = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter3 setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter3 setDateFormat:@"hh:mm:ss"]; 
NSDate *date1 = [dateFormatter3 dateFromString:dats1]; 
NSLog(@"date1 : %@", date1); **// Here returning (null)** 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"hh:mm a"]; 
NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)** 
[formatter release]; 

"00:00:00"이 전달되면 "12 AM"이 올바르게 반환됩니다. 누구든지이 문제를 해결할 수 있도록 도와 주시겠습니까? 미리 감사드립니다.

+1

답변을 게시하고 도와 주신 모든 분들께 감사드립니다. 당신은 모두 정확하게 대답하고이 문제를 해결할 수 있도록 도와주었습니다. 다시 한번 감사드립니다. – Gopinath

+2

나는 당신의 정답 전부에 upvote를 주었다. 도움의 손길을 가져 주셔서 감사합니다. – Gopinath

+1

정말'NSDateFormatter'에 대한 문서를 읽는 데 시간을 할애 했으므로 직접 대답 해 줄 수는 있습니다. –

답변

104

경우, NSString에 다시 NSDate로 포맷해야합니다. 코드를 테스트하고 그것이 효과가 있는지 알려주십시오. 나는 시험을 마치고 돌아왔다. "4 PM"

NSString *dats1 = @"16:00:00"; 
NSDateFormatter *dateFormatter3 = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter3 setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter3 setDateFormat:@"HH:mm:ss"]; 
NSDate *date1 = [dateFormatter3 dateFromString:dats1]; 
NSLog(@"date1 : %@", date1); **// Here returning (null)** 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"hh:mm a"]; 
NSLog(@"Current Date: %@", [formatter stringFromDate:date1]); **// Here also returning (null)** 
[formatter release]; 

고마워.

+0

12:12)이지만 12:12 pm입니다.Hmmm –

+0

ios9에서 16:00을 반환합니다. –

+0

@PatelJigar이 [dateFormatter setLocale : [[NSLocale alloc] initWithLocaleIdentifier : @ "en_US_POSIX"]]]; –

16

NSDateFormatter을 다시 할당하는 이유는 무엇입니까?

당신은 그냥 시간 형식이 "HH:mm:ss" 형식을 사용하십시오 24hrs

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setDateFormat:@"HH:mm:ss"]; 

    NSDate *date = [dateFormatter dateFromString:dats1]; 

    [dateFormatter setDateFormat:@"hh:mm a"]; 

    NSString *formattedDate = [dateFormatter stringFromDate:date]; 

    NSLog(@"%@",formattedDate); 
+0

좋은 코드 ... +1,하지만 먼저 'dateFormatter setDateFormat : @ "HH : mm : ss"];'이 필요하지 않습니다. – Dilip

+6

입력 시간 형식이 HH 형식 (예 : 24 시간 형식 – Charan

14

HH:mm:ss 시도를 좀하고 싶습니다

+4

는 H 대 H를 위해 upvoted. –

7

희망 누군가가 도움이 될 것입니다 (시간 형식으로 수도를 통지) 스위프트에서

스위프트의 경우

let dateFormatter = NSDateFormatter() 
//if some one want 12AM,5PM then use "hh mm a" 
//if some one want 00AM,17PM then use "HH mm a" 
dateFormatter.dateFormat = "hh mm a" 
let stringDate = dateFormatter.stringFromDate(NSDate()) 
println(stringDate) 
+0

내 친구가 작동하지 않습니다. –

6

이 아래 코드는 항상 12시간 형식으로 유지 :

NSLocale *12hourFomrat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
df.locale = 12hourFomrat; 

이 항상

NSLocale *24hourFormat = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; 
df.locale = 24hourFormat 
11

당신은 현재 로케일에 적응 할 .ShortStyle 사용할 수있는 24 시간 형식으로 유지 :

let timeFormatter = NSDateFormatter() 
timeFormatter.dateStyle = .NoStyle 
timeFormatter.timeStyle = .ShortStyle 
timeFormatter.stringFromDate(NSDate()) 

현재 장치 로케일에 따라 17:12 또는 5:12 PM을 반환합니다.

관련 문제