And*_*ord 4 datetime date nsdate nsdateformatter ios
在我的iOS应用程序中,我有一个NSDate对象,应该转换为NSString,以UTC/GMT显示日期和时间:
NSDateFormatter * dateTimeFormatter = [[NSDateFormatter alloc] init];
[dateTimeFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
// OR [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
// OR [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
// OR [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
// OR [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
// OR not specify the TimeZone at all...
NSString *result = [dateTimeFormatter stringFromDate:date];
Run Code Online (Sandbox Code Playgroud)
当我设置断点并检查date
它是否正确显示为__NSDate * 2015-08-25 14:03:57 UTC
.但是生成的字符串是2015-08-25 16:03:57
,这是我本地TimeZone(CEST)中的相同日期.
无论我尝试使用哪种解决方案获得UTC/GMT格式的字符串2015-08-25 14:03:57
,我总是得到本地版本2015-08-25 16:03:57
.
我找到的所有来源都说明了这一点.我的错误在哪里?
这段代码应该有效:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[formatter setTimeZone:timeZone];
NSDate *now = [NSDate date];
NSString *dateAsString = [formatter stringFromDate:now];
Run Code Online (Sandbox Code Playgroud)
我在你的代码中看到的唯一奇怪的事情是你使用dateFormatter
而不是dateTimeFormatter
设置时NSTimeZone
.
归档时间: |
|
查看次数: |
1329 次 |
最近记录: |