【问题标题】:Issue with NSString to NSDate Conversion [closed]NSString 到 NSDate 转换的问题[关闭]
【发布时间】:2013-01-19 18:12:28
【问题描述】:

我正在将一个 NSString 转换为一个 NSDate 并在最终转换中遇到了年份错误的问题。

我的输入日期是2013-05-27 03:38:20 +0000(在下面的代码中列为lastEntry.date)

我的转换代码如下:

//Convert String to NSDate

NSDateFormatter *originalDateFormat = [[NSDateFormatter alloc] init];

[originalDateFormat setDateFormat:@"YYYY-MM-dd hh:mm:ss Z"];
[originalDateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

NSDate *originalEndDate = [originalDateFormat dateFromString:lastEntry.date];

NSLog(@"Converted End Date = %@", [originalDateFormat stringFromDate:originalEndDate]);

我得到的最终输出是:Converted End Date = 2012-05-27 03:38:20 +0000

我不知道为什么我在这次转换中损失了一年。到目前为止,在我的所有研究中,这个转换过程中最难的部分似乎是确保格式正确,并且由于我的输出日期格式正确,我觉得还有其他问题。我有什么遗漏或做错了吗?

【问题讨论】:

  • 请分享您设置 lastEntry.date 的代码
  • 使用大Ys 作为年份可能会导致无法返回当前日历年。更多信息:unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns
  • 这可能没什么,但你能把日志输出贴出来吗: NSLog(@"Converted End Date = %@", originalEndDate);我想在不通过格式化程序在两个方向上运行的情况下查看日期。
  • @AnoopVaidya 和 Boris - 更改为 yyyy 效果很好,并且该链接包含有关日期格式的大量信息。非常感谢你们。

标签: ios objective-c cocoa-touch nsstring nsdate


【解决方案1】:

将日期格式从 YYYY 更改为 yyyy

【讨论】:

    【解决方案2】:

    日期格式化程序相关的东西。

    d: 1~31 (0 填充日期) D:1~366(0 填充的一年中的一天)

    e:1~7(0 填充星期几) E~EEE:周日/周一/周二/周三/周四/周五/周六 EEEE:周日/周一/周二/周三/周四/周五/周六

    月/月:1~12(0 填充月) MMM:一月/二月/三月/四月/五月/六月/七月/八月/九月/十月/十一月/十二月 MMMM:一月/二月/三月/四月/五月/六月/七月/八月/九月/十月/十一月/十二月

    y/yyyy:(全年) yy/yyy:(2 位数年份) Y/YYYY:(全年,从一年中第一周的星期日开始) YY/YYY:(2 位数年份,从一年中第一周的星期日开始)

    【讨论】:

    • 复制文档并没有真正回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多