为什么 strtotime returns 是一个带有一些奇怪字符串的日期?

Why does strtotime returns a date with some strange string?

我正在使用

测试一些字符串(国家/地区)

strtotime()

运行并发现:

更进一步,'a string' 也在返回一些东西,就像一些简单的字母一样 'G' 或者'P'.

datetime relative formats 文档中未列出这些字符串。

我可能很笨,但我没有在那些特殊情况下找到任何东西,到底发生了什么?

第二个不太重要的问题:如何实际检查一个字符串是否是有效的日期格式,不包括那些“特殊”字符串,知道我事先不知道格式?

DateTime 接受与 strtotime 相同的参数。用于 DateTime 的参数 'GB' 表明 'GB' 被识别为时区。

var_dump(new DateTime('GB'));
/*
object(DateTime)#3 (3) {
  ["date"]=>
  string(26) "2021-09-24 16:54:37.568996"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(2) "GB"
}
*/

与 'Poland' 一样,'GB' 也表示在 list of Others time zones 中。 'Soland' 没有。 DateTime 然后为正确识别的时区提供当前时间 ('Now')。