将日期从 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