gpt4 book ai didi

ios - NSDateFormatter stringFromDate : returning local time instead of UTC/GMT

转载 作者:可可西里 更新时间:2023-11-01 05:20:13 25 4
gpt4 key购买 nike

在我的 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];

当我设置断点并检查 date 时,它正确显示为 __NSDate * 2015-08-25 14:03:57 UTC。但是,生成的字符串是 2015-08-25 16:03:57,这与我本地时区 (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];

我在您的代码中看到的唯一奇怪的事情是您在设置 NSTimeZone 时使用 dateFormatter 而不是 dateTimeFormatter

关于ios - NSDateFormatter stringFromDate : returning local time instead of UTC/GMT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32207910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com