ios中从字符串到NSDate的日期转换

Posted

技术标签:

【中文标题】ios中从字符串到NSDate的日期转换【英文标题】:Date conversion from string to NSDate in ios 【发布时间】:2014-10-24 07:17:29 【问题描述】:

我已经在互联网上搜索了很长时间才能得到这个,但我找不到解决方案。我从网络服务收到一个日期字符串为"22 May 2014",我必须转换为NSDate 格式以检查当前日期。我必须从网络服务中找出日期是将来还是过去。

实际的问题是当我使用转换它时

NSDate *date;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd MMMM YYYY"];
date = [dateFormatter dateFromString:dateString];

但我得到一个完全不同的日期,示例输入 dateString:22 June 2014 和我得到的输出是 2013-12-21 18:30:00+0000

请提出任何解决方案。

提前致谢。 :)

【问题讨论】:

你是对的@Jon Skeet..@Sudheesh 请参考这篇文章***.com/questions/3917250/… 【参考方案1】:

您使用的是YYYY,这并不意味着您认为它意味着什么。在TR35-31 文档中,Y 是“年历中的年”的符号。

您希望 dd MMMM yyyy 作为您的格式字符串。混合使用基于周的字段和常规的日/月/年字段会导致奇怪的问题。

此外,您可能希望在格式化程序中设置时区 - 如果您只是解析日期,那么您应该考虑使用 UTC,并确保所有您的计算和格式/parsing 使用 UTC。

(我怀疑这里的问题是尚未设置一年中的一周,因此假定为 1 ......并且 2014 年的一周年开始于 12 月 30 日。那么月中的日期是由 dd 部分设置为 22,然后考虑您的 UTC+05:30 时区偏移量。)

【讨论】:

感谢@Jon Skeet 的突然回复,我已经检查过了,发现工作正常。 该死的乔恩,你无处不在,即使在 ios 标记的问题上也是如此。有什么标签我找不到你吗? :)

以上是关于ios中从字符串到NSDate的日期转换的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中将用户出生日期格式化为 NSDate 对象

将字符串转换为 NSDate 给出错误的日期

将 Adob​​e PDF 日期字符串转换为 NSDate

Java中从字符串到sql日期的日期转换给出不同的输出? [复制]

将 UTC 日期格式转换为本地 nsdate

如何使用格式化程序将字符串日期转换为 nsdate?