다음 코드가 있습니다 :
NSDateFormatter * df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setFormatterBehavior:NSDateFormatterBehaviorDefault];
[df dateFromString:@"2011-04-12 10:00:00"];
항상 null 날짜를 생성합니다. 왜 이런가요?
- 답변 # 1
- 답변 # 2
기기가 AM/PM 시간으로 설정되고 요청 된 문자열 형식이
@"yyyy-MM-dd HH:mm:ss"
로 설정된 경우 와이즈 비즈dateFromString
를 반환합니다 .로케일을
nil
로 설정 한 경우 전환하면 정확한 날짜가 표시됩니다.@"en_US"
- 답변 # 3
같은 문제가있었습니다. 이 리소스를 사용하여 변환에 사용 된 문자열이 유효한지 다시 확인하여 시작했습니다.
그런 다음 그것이 로케일일지도 모른다는 생각이 들기 때문에 다음을 시도했습니다.
dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *date = [dateFormat dateFromString:@"2013-02-14 09:30:00"];
그것은 매력처럼 작동했습니다. 이것이 도움이 되길 바랍니다.
- 답변 # 4
방금이 코드를 실행했고 저에게 효과적이었습니다.
[dateFomatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_AU"]]
결과는 다음과 같습니다 : 날짜 : 2011-04-12 17:00:00 +0000
- 답변 # 5
예, @Jan Gressmann과 합의했습니다. 비 UI 스레드에서도 NSDateFormatter를 사용하고 있으며 dateFromString 선택기가 때때로 null을 반환합니다. 예를 들어code:
콘솔에서NSDateFormatter * df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; [df setTimeZone:[NSTimeZone systemTimeZone]]; [df setFormatterBehavior:NSDateFormatterBehaviorDefault]; NSDate *theDate = [df dateFromString:@"2011-04-12 10:00:00"]; NSLog(@"date: %@", theDate);
출력:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; [dateFormat setLocale:usLocale]; [dateFormat setDateFormat:@"dd MMM yy HH:mm:ss"]; NSDate *startDate = [dateFormat dateFromString:str_StartDate]; NSDate *endDate = [dateFormat dateFromString:str_endDate];
정말 이상해 ...
(lldb) po str_StartDate (NSString *) $7 = 0x06da2180 03 SEP 2012 10:00:00 (lldb) po str_endDate (NSString *) $8 = 0x06d3a810 08 SEP 2013 10:00:00 (lldb) po startDate (NSDate *) $9 = 0x00000000 <nil> (lldb) po endDate (NSDate *) $10 = 0x06db05b0 2013-09-08 02:00:00 +0000
관련 자료
- c# - FileOpenPicker는 Xbox One에서 항상 null을 반환합니다
- c# - GetTypes () 메서드를 실행할 때 형식 변수는 항상 null을 반환합니다
- caching - Google 클라우드 버킷은 메타 데이터를 설정 한 후에도 항상 캐시 없음, 저장소 없음 헤더를 반환합니다
- kendo ui - 페이지에 도착하면 gridhasChanges가 항상 true를 반환합니다
- python - 해는 항상 x = 0을 반환합니다
- asp.net - LinkedIn 사용자 데이터에 대한 API 요청은 항상 401을 반환합니다
- android - 포함 메소드가 항상 false를 리턴합니까?
- android - isHardwareAccelerated ()는 항상 false를 반환합니다
- SOAP 웹 서비스의 응답은 항상 null Android Studio를 반환합니다
- blazor server side - Entity Framework Core 쿼리는 항상 캐시 된 데이터를 반환합니다
- serivceaccount 토큰으로 Kubernetes를 말아서 항상 "무단"을 반환합니다
- c# - RectangleF contains는 항상 false를 반환합니다
- java - Tomcat에서 ValveBase를 확장하면 request에 대해 항상 null을 반환합니다
- usrp - I2C를 통해 Ettus E310 기압계를 읽으면 항상 해당 장치 또는 주소 없음을 반환 함 (-1)
- java - 정규식 매처는 항상 false를 반환합니다
- java - Android AudioTrack getPlaybackHeadPosition은 항상 0을 반환합니다
- java : JSONObject는 항상 "empty"를 반환합니다. false.
- angular - 라우터 getCurrentNavigation은 항상 널을 리턴합니다
- Jenkins Pipeline - 젠킨스 파이프 라인 - if 문이 항상 false를 반환하는 경우
- node.js : 여권 jwt가있는 비대칭 키. 항상 Unauthorized 반환 확인
- iphone : NSDictionary를 탐색하는 방법?
- ios : 하위 프로젝트의 상위 프로젝트에서 Cocoapod를 재사용하십시오
- iOS, 접근성 -AccessibleDentyden= 아니오; 즉시 효과가 없습니다
- iphone : iOS 5.1 에서이 code가 왜 충돌하지 않지만 iOS 6이 아닌가?
- ios : 스토리 보드 실행 파일에서보기에 제약 조건을 추가하려면 어떻게해야합니까?
- ios : UITableView를 위쪽으로 위쪽으로 채우는 방법은 무엇입니까?
- iOS 장치 실제 크기 인치
- 오류 : 인수 목록 너무 길 : 재귀 머리글 확장 /응용 프로그램 /iWork '09 /pages.app/.../contents/resources에 실패했습니다.
- 세부 정보 공개 버튼을 시뮬레이션합니다
- ios : 탭 막대 컨트롤러 시작 시간 첫 번째 뷰 컨트롤러보기 위치 20px 다운
배경 스레드에서이 작업을 수행하고 있습니까? UI 스레드에서 사용되지 않을 때 NSDateFormatter에 이상한 경험이있었습니다. 어쨌든, 내가 사용하는 방법은 다음과 같습니다.