Ios NSDate返回新加坡当地时间(SGT)1933-01-01 00:00:00的零

Ios NSDate返回新加坡当地时间(SGT)1933-01-01 00:00:00的零,ios,objective-c,iphone,datetime,timezone,Ios,Objective C,Iphone,Datetime,Timezone,如果运行此代码,可以看到1933-01-01 00:00:00+0000的NSDate始终为空。请帮我解决这个问题 NSString *date = @"1933-01-01 00:00:00 +0000"; NSString* dateString = [[NSString stringWithFormat:@"%@", date] stringByReplacingOccurrencesOfString:@" +0000" withString:@""]; NSDateF

如果运行此代码,可以看到1933-01-01 00:00:00+0000的NSDate始终为空。请帮我解决这个问题

NSString *date = @"1933-01-01 00:00:00 +0000";

 NSString* dateString = [[NSString stringWithFormat:@"%@", date] stringByReplacingOccurrencesOfString:@" +0000" withString:@""];
        NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"SGT"]];
        [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
        [dateFormatter setLocale:[NSLocale systemLocale]];
        [dateFormatter setFormatterBehavior:NSDateFormatterBehaviorDefault];
        NSDate* sgtDate = [dateFormatter dateFromString:dateString];
        NSLog(@"SGT Date: %@",sgtDate);
试试看

而不是

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"SGT"]];

您的代码正在为我工作。我在新加坡,上面的代码@Rebello95我的代码为空。这个Im无厘头@user2864740的工作方法是什么?它可能与之相关-它是否适用于
1933-01-01 00:21:00+0000
(即,小时后21分钟)?@Ashan既然问题已经确定,也许值得扩展问题描述和断言——这就留下了核心问题:“如何处理由于历史时区规则变化而不存在的本地时间?”在这种情况下,由于时间向前跳,可能最适合减去差值(20分钟)从根本不存在的当地时间开始。这将导致现有的本地时间有效转换回UTC。您期望的输出是什么?
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"SGT"]];