2012-11-28 8 views
4

내 프로젝트에서는 NSDateFormatter을 사용하여 응용 프로그램에 표시된 날짜의 형식을 올바르게 지정했습니다. 더 구체적으로 예를 들면 다음과 같습니다.iOS : 타이머/시간 카운터 포맷 및 지역화

English: 12:34 am 
Arabic: ١٢:٣٤ ص 

위대하게 보이며 필요한 숫자를 보여줍니다. 그러나, 나는 응용 프로그램에서 위/아래로 카운트되는 시간 카운터/타이머가 : 나는 NSDateFormatter을 확인

٠١:٣١:٢٢ 

:하지만, 내가 제대로이 카운터를 지역화 할 방법

01:31:22 // HH:mm:ss 

을 표시한다 내가 볼 수있는 한이 사용 사례를 실제로 나타내지는 않습니다. NSNumberFormatter 통화 및 백분율을 위해 작동하는 것 같습니다. 이 NSTimeZone 속성을 가지고 있기 때문에

, 우리는 카운터를 사용하고자 할 때 모두 쓸모 am/pm 접미사가 :


NSDateFormatter 이해가되지 않습니다.

+1

이'NSDateFormatter'이 특정 유스 케이스를 표현한다, 그것은 일의 어떤 형태의 표현의 생성합니다. 어떻게 당신을 위해 작동하지 않습니다? – WDUK

+0

@WDUK 나는 초를 포함하는 변수를 가지고 있는데 이것을'HH : mm : ss'로 바꾸어야합니다. 'NSDateFormatter'를 사용하기 위해서, 나는'NSDate'에 대한 초를 변환해야만합니다. 그러나 그것은 나에게 의미가 없습니다. (나는 이해가되기를 바랍니다). – Mazyod

+0

날짜 간격을 형식화하는 것이 좋습니다. 맞습니다. 이것은 그렇게 간단하지 않을 것입니다. ** ** (아직 확인할 수 없음) ** 같은 소리는 사용자가 원하는 효과를 얻기 위해 사용자 정의 포맷터가 필요할 수도 있습니다. 몇 시간 후에 살펴볼 예정이지만 그 전까지는 https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/DataFormatting/Articles/CreatingACustomFormatter.html#//apple_ref/doc를 참조하십시오./uid/20000196-CJBFABHB – WDUK

답변

2

바로 그 때, 나는 당신을 위해 뭔가를 가지고 있다고 생각합니다. 기본 NSFormatter 하위 클래스를 만들었으므로 트릭을 수행 할 수 있습니다. 당신이해야 할 일은 NSTimeInterval을 포함하는 NSNumber을 제공하는 것입니다.

.H와하는 .m

여기에 사용할 수 있습니다 여기

그리고 https://github.com/WDUK/WDCountdownFormatter은 그것을 사용하는 몇 가지 예제 코드, 그리고 예, 그것은 로케일을 존중해야한다.

WDCountdownFormatter* format = [[WDCountdownFormatter alloc] init]; 
NSLog(@"70 - %@",[format stringForObjectValue:@(70)]); 
NSLog(@"179 - %@",[format stringForObjectValue:@(179)]); 
NSLog(@"-10 - %@",[format stringForObjectValue:@(-10)]); // Invalid, will return nil 
NSLog(@"0 - %@",[format stringForObjectValue:@(0)]); 
NSLog(@"9827193 - %@",[format stringForObjectValue:@(9827193)]); 
NSLog(@"1 - %@",[format stringForObjectValue:@(1)]); 

// UK English 
2012-11-28 23:11:11.453 StackOverflow[28687:c07] 70 - 00:01:10 
2012-11-28 23:11:11.456 StackOverflow[28687:c07] 179 - 00:02:59 
2012-11-28 23:11:11.457 StackOverflow[28687:c07] -10 - (null) 
2012-11-28 23:11:11.458 StackOverflow[28687:c07] 0 - 00:00:00 
2012-11-28 23:11:11.458 StackOverflow[28687:c07] 9827193 - 2729:46:33 
2012-11-28 23:11:11.459 StackOverflow[28687:c07] 1 - 00:00:01 

// Egyptian Arabic 
2012-11-28 22:59:54.057 StackOverflow[28400:c07] 70 - ٠٠:٠١:١٠ 
2012-11-28 22:59:54.659 StackOverflow[28400:c07] 179 - ٠٠:٠٢:٥٩ 
2012-11-28 22:59:55.473 StackOverflow[28400:c07] -10 - (null) 
2012-11-28 22:59:56.464 StackOverflow[28400:c07] 0 - ٠٠:٠٠:٠٠ 
2012-11-28 22:59:57.311 StackOverflow[28400:c07] 9827193 - ٢٧٢٩:٤٦:٣٣ 
2012-11-28 23:10:36.657 StackOverflow[28400:c07] 1 - ٠٠:٠٠:٠١ 
+0

와아, 이것은 매우 산뜻하다. 가장 좋은 점은 패딩을 잊지 않았기 때문입니다. – Mazyod

+0

GitHub를 계속 주시하십시오. 앞으로는 NSNumber, 밀리 초 지원, 유지/릴리스 지원 (현재로서는 ARC가 필요함) 등을 전달할 필요가 없습니다.).기꺼이 도와 드리겠습니다. – WDUK

+0

WDCountDownFormatter에서 포맷터를 변경하여 아랍어 또는 페르시아어 로케일로 숫자를 인쇄 할 수 있습니다. [formatter setLocale : [[NSLocale alloc] initWithLocaleIdentifier : @ "per"]]]; –