Ios NSDate返回新加坡当地时间(SGT)1933-01-01 00:00:00的零
如果运行此代码,可以看到1933-01-01 00:00:00+0000的NSDate始终为空。请帮我解决这个问题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
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"]];