可疑的日期格式¶
ID: java/suspicious-date-format
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- correctness
Query suites:
- java-security-and-quality.qls
Java SimpleDateFormat
类提供了许多占位符,以便您可以精确地定义所需的日期格式。但是,这也使得很容易定义一个行为与您的预期不符的模式。最常见的错误是使用 Y
占位符(表示 ISO 8601 周年),而不是 y
(表示实际年份)。在这种情况下,报告的日期将显示正确,直到年底,届时“周年”可能与实际年份不同。
建议¶
确保格式模式对 Y
的使用是正确的,如果不是,请用 y
替换它。
示例¶
以下示例使用日期格式 YYYY-MM-dd
。在 2019 年 12 月 30 日,此代码将输出“2020-12-30”,而不是预期的“2019-12-30”。
System.out.println(new SimpleDateFormat("YYYY-MM-dd").format(new Date()));
在这种情况下,正确的模式应该是 yyyy-MM-dd
,而不是 YYYY-MM-dd
。
参考¶
Java API 规范:SimpleDateFormat.