将日期从 NSDictionary 序列化为 JSON 时强制区域?

Posted

技术标签:

【中文标题】将日期从 NSDictionary 序列化为 JSON 时强制区域?【英文标题】:Force region when serializing dates to JSON from NSDicitionary? 【发布时间】:2013-12-11 16:35:28 【问题描述】:

我正在使用包含日期字段的请求初始化 AFJSONRequestOperation(使用 AFNetworking 库)。当端点收到请求时,日期在设备区域中格式化。例如:

"last_update" = "dom dic 1 10:57:52 -0500 2013";

我想强制将格式设置为加拿大或美国等地区。

这可能吗,因为我们的端点在没有用英语格式化的日期上阻塞,例如:

"last_update" = "Wed Dec 1 10:57:52 -0500 2013";

【问题讨论】:

IMO 你根本不应该使用任何语言。取而代之的是 @"2013-12-01T10:57:52-0500" xkcd.com/1179 【参考方案1】:

如果您的 API 需要这样做,请查看 NSDateFormatter,它以您想要的任何方式创建 NSDate 对象的字符串表示形式。只需像这样设置语言环境:

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocale];

这里是a good intro to this class at NSHipster。

不过,您可能会发现将 API 更改为接受自 1970 年 1 月 1 日(格林威治标准时间)以来的秒数作为日期会更简单。这是在平台之间传输数据时表示日期和时间的常用方法。您可以在 NSDate 对象上调用 timeIntervalSince1970 方法来检索此数据。然后,如果需要,API 可以将其转换为区域设置或时区。

【讨论】:

以上是关于将日期从 NSDictionary 序列化为 JSON 时强制区域?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NSCFArray(可能的 JSON)序列化为 NSDictionary?

使用 ObjectMapper 将 JSON 日期格式从 ZonedDateTime 序列化为自定义日期格式

将 json utc 日期从 jira api 反序列化为 .net 日期时间

Spring boot:JSON将带有时区的日期和时间反序列化为LocalDateTime

将 Objective-C 对象序列化和反序列化为 JSON

Jackson 将日期字符串反序列化为 Long