iPhone의 날짜 문자열에서 밀리 초 동안 어떤 형식 문자열을 사용합니까?


100

밀리 초를 포함하는 형식으로 문자열을 구문 분석해야합니다. 올바른 날짜 값을 얻으려면 어떤 형식 문자열을 사용해야합니까?

예를 들어 "2011-06-23T13 : 13 : 00.000"값을 가진 문자열이 있다고 가정합니다.

다음 코드에서 NSDateFormatter에 어떤 형식 문자열을 전달합니까?

NSString *dateValue = @"2011-06-23T13:13:00.000";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSString *formatString = @"yyyy-MM-dd'T'HH:mm:ss.???";
[formatter setDateFormat:formatString];
NSDate *date = [formatter dateFromString:dateValue];

??? 대신 무엇을 사용합니까? 위의 코드에서?

답변:


211

그것은의 SSS당, 유니 코드 로케일 데이터 마크 업 언어 사양 .

"yyyy-MM-dd'T'HH:mm:ss.SSS"

보다 일반적으로, 몇 개의 대문자 S 문자를 사용하여 초당 분수 구성 요소에서 소수 자리를 많이 얻습니다. ( ss.S예를 들어 가장 가까운 1/10 초 단위로 시간이 표시됩니다.)


2
밀리 초의 관대 한 파싱을 어떻게 할 수 있는지 알고 있는지 궁금합니다. 날짜는 6, 7 또는 밀리 초가 없을 수도 있습니다. 정규 표현식을 사용할 수는 있지만 적절한 형식 문자열을 사용하여 즉시 수행 할 수 있는지 궁금합니다.
Cyupa 2013 년

이렇게하면 S의 최대 개수는 3 개입니다 (예 : SSS). 더 추가하면 1415986217.544384 및 .SSSSSS의 timeIntervalSince1970 및 .SSSSSS에 대해 0을 얻으므로 훌륭한 솔루션이 아닙니다.
malhal 2014

@Cyupa 밀리 초는 1/1000 초입니다. 소수점 6 자리는 마이크로 초이고 소수점 1 자리는 데 시초입니다. – 소수의 숫자에 밀리 초를 사용하는 것은 비 유적으로 문자 그대로 사용하는 것만 큼 잘못되었습니다. 당신은 여전히 ​​그것을 할 수 있지만 그것은 단어의 의미를 바꾸고 있습니다.
Liggliluff


4

당신은 내 일이었다 예를 들어, 마지막에 'S'의 같은 번호를 전달해야 ': 36 : 2015-11-17T03 45.041503Z' 내가 사용하는 'YYYY-MM-dd'T'HH : mm : ss.SSSSSSz' 포맷터, 날짜에 오는 6 자리 숫자로 'S'의 숫자가 6이라는 것을 의미합니다.


밀리 초가 아닌 마이크로 초 단위로 나노초를 얻도록 포맷 된 것. 'yyyy-MM-dd'T'HH : mm : ss.SSSSSSz'및 'yyyy-MM-dd'T'HH : mm : ss.SSSSSSSSSz'로 시도했지만 작동하지 않습니다.
IndexOutOfDevelopersException

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.