objc-nsdate-formatter

NSDateFormatter 用于将 NSDate 类型转换为 String 类型时,用户可以指定自定义格式字符串。某些格式说明符尽管合法,但并不理想。有关所有合法日期模式的信息,请参见 http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns

此检查器将日期格式说明符中的以下字符串模式报告为警告

  1. yyyy + ww : 指定了年历年中的周数(除非也指定了 YYYY)。

    • 示例 1:输入日期:2014 年 12 月 29 日;格式字符串:yyyy-ww
      输出字符串:2014-01(错误,因为这不是 2014 年的第一周)
    • 示例 2:输入日期:2014 年 12 月 29 日;格式字符串:dd-MM-yyyy (ww-YYYY)
      输出字符串:29-12-2014 (01-2015)(这是正确的)
  2. F without ee/EE : 不带实际日期的月份中的星期几的数字。

    • 示例:输入日期:2014 年 12 月 29 日;格式字符串:F-MM
      输出字符串:5-12(错误,因为在英语中它读作12 月的第 5 个 ___
  3. F without MM : 不带月份的月份中的星期几的数字。

    • 示例:输入日期:2014 年 12 月 29 日;格式字符串:F-EE
      输出字符串:5-Mon(错误,因为在英语中它读作___ 的第 5 个星期一
  4. WW without MM : 不带月份的月份中的周数。

    • 示例:输入日期:2014 年 12 月 29 日;格式字符串:WW-yyyy
      输出字符串:05-2014(错误,因为在英语中它读作___ 的第 5 周
  5. YYYY + QQ : 指定了年历年中的季度(除非也指定了 yyyy)。

    • 示例 1:输入日期:2014 年 12 月 29 日;格式字符串:YYYY-QQ
      输出字符串:2015-04(错误,因为这不是 2015 年的第 4 季度)
    • 示例 2:输入日期:2014 年 12 月 29 日;格式字符串:ww-YYYY (QQ-yyyy)
      输出字符串:01-2015 (04-2014)(这是正确的)
  6. YYYY + MM : 指定了年历年中的月份(除非也指定了 yyyy)。

    • 示例 1:输入日期:2014 年 12 月 29 日;格式字符串:YYYY-MM
      输出字符串:2015-12(错误,因为这不是 2015 年的第 12 个月)
    • 示例 2:输入日期:2014 年 12 月 29 日;格式字符串:ww-YYYY (MM-yyyy)
      输出字符串:01-2015 (12-2014)(这是正确的)
  7. YYYY + DD : 年历年中的天数与周年的组合(除非也指定了 yyyy)。

    • 示例 1:输入日期:2014 年 12 月 29 日;格式字符串:YYYY-DD
      输出字符串:2015-363(错误,因为这不是 2015 年的第 363 天)
    • 示例 2:输入日期:2014 年 12 月 29 日;格式字符串:ww-YYYY (DD-yyyy)
      输出字符串:01-2015 (363-2014)(这是正确的)
  8. YYYY + WW : 年历年中的周数与周年的组合(除非也指定了 yyyy)。

    • 示例 1:输入日期:2014 年 12 月 29 日;格式字符串:YYYY-WW
      输出字符串:2015-05(错误,因为这不是 2015 年的第 5 周)
    • 示例 2:输入日期:2014 年 12 月 29 日;格式字符串:ww-YYYY (WW-MM-yyyy)
      输出字符串:01-2015 (05-12-2014)(这是正确的)
  9. YYYY + F : 年历月中的星期几与周年的组合(除非也指定了 yyyy)。

    • 示例 1:输入日期:2014 年 12 月 29 日;格式字符串:YYYY-ww-F-EE
      输出字符串:2015-01-5-Mon(错误,因为这不是 2015 年 1 月的第 5 个星期一)
    • 示例 2:输入日期:2014 年 12 月 29 日;格式字符串:ww-YYYY (F-EE-MM-yyyy)
      输出字符串:01-2015 (5-Mon-12-2014)(这是正确的)