gpt4 book ai didi

objective-c - iOS : how to deal (or not deal) with timezones? 中的日期/时间解析

转载 作者:IT王子 更新时间:2023-10-29 08:19:32 27 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 3 网站,它通过 JSON 与我的 iOS 应用程序通信。作为 JSON 响应中发送的对象的一部分,我的日期格式为 yyyy-MM-dd HH:mm:ss ZZZ,输出 2011-04-05 16:28: 22 -07:00。我如何在 iOS 中解析它?

这是我现在正在处理的代码:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSDate *date = [dateFormatter dateFromString:@"2011-04-05T16:28:22-0700"];

NSLog(@"%@; %@; %@", dateFormatter, date, [NSTimeZone localTimeZone]);

首先要注意的是 2011-04-05 16:28:22 -07:00 必须看起来像 2011-04-05T16:28:22-0700,其中一个 T 替换第一个空格(假设代表时间,或者字符串的时间部分从哪里开始?),第二个空格被删除并且时区中的冒号是删除。我想我会找到一种方法来格式化 .NET 发回的字符串以符合 iOS 将解析的字符串。

真正的问题是输出的日期比我在 JSON 响应中发送的日期早 7 小时。所以,iOS 将 2011-04-05 16:28:22 -07:00 输出为 2011-04-05 23:28:22 +0000,这是错误的就我的应用而言。

到目前为止,我找到的唯一解决方案是将 JSON 中的日期发送为 2011-04-05 16:28:22 +00:00,但这又是错误的,因为我正在更改实际日期。

无论如何,如果有人看一下并告诉我如何解析 .NET 通过格式输出的日期字符串,我将不胜感激 yyyy-MM-dd HH:mm:ss ZZZ (我想可以将其重写为 yyyy-MM-ddTHH:mm:ssZZZ) 到我可以在 iOS 中使用的 NSDate 对象。

最佳答案

我不知道这有多正确,但我最终发现在 .NET 中我必须执行 DateTime.ToUniversalTime().ToString("yyyy-MM-ddHH:mm:ss") 在 iOS 端我必须这样做:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-ddHH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:@"2011-04-0600:28:27"];

只有那时 NSLog 输出的日期才是正确的,所以我假设我终于得到了正确的日期/时间。

关于objective-c - iOS : how to deal (or not deal) with timezones? 中的日期/时间解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559912/

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