【问题标题】:Getting wrong date on changing date format更改日期格式时获取错误日期
【发布时间】:2015-01-21 08:59:05
【问题描述】:

我在更改日期格式时弄错了日期,我正在使用以下代码

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

[formatter setDateFormat:@"MMM dd, YYYY"];

NSDate * theDate = [NSDate dateWithTimeIntervalSince1970:1419929948.7490001];

NSString * dateStr = [formatter stringFromDate:theDate];

输出 -

theDate is : 2014-12-30 08:59:08 +0000
dateStr is : Dec 30, 2015

谢谢

【问题讨论】:

    标签: ios ios7 ios8 nsdate nsdateformatter


    【解决方案1】:

    您想使用yyyy 而不是YYYY。小的y 是日历年,而大写的Y 是“一年中的一周”中的年份。

    下面是the specification的解释。

    F.4 一年中的一周

    对于公历,为年份字段计算的值范围为 1 到 53(对于其他日历,它们可能具有不同的范围)。一年的第 1 周是从该年起至少包含指定最小天数的第一周。一年的第 1 周和下一年的第 1 周之间的周按从 2 到 52 或 53 的顺序编号(如果需要)。例如,1998 年 1 月 1 日是星期四。如果一周的第一天是 MONDAY,一周的最少天数是 4(这些值反映了 ISO 8601 和许多国家标准),那么 1998 年的第 1 周从 1997 年 12 月 29 日开始,到 1 月 4 日结束, 1998. 但是,如果一周的第一天是星期日,则 1998 年的第 1 周从 1998 年 1 月 4 日开始,到 1998 年 1 月 10 日结束。1998 年的前三天是 1997 年第 53 周的一部分。

    【讨论】:

      【解决方案2】:

      更改以下行代码。

      [formatter setDateFormat:@"MMM dd, yyyy"];
      

      输出是:

      【讨论】:

        【解决方案3】:

        使用下面一行

        [格式化程序 setDateFormat:@"MMM dd, yyyy"];

        【讨论】:

          【解决方案4】:

          按类别分类

          + (NSString *)dateStampFromDate:(NSDate *)date
          {
              NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
              [dateFormatter setDateFormat:@"MMM dd, yyyy"];
              NSString *timeStamp = [dateFormatter stringFromDate:date];
              return timeStamp;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-05
            • 2016-11-22
            相关资源
            最近更新 更多