CodeQL 文档

可疑的日期格式

ID: java/suspicious-date-format
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - correctness
Query suites:
   - java-security-and-quality.qls

单击查看 CodeQL 仓库中的查询

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

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私