当日有两位数字时,PHP将字符串转换为另一个时区

时间:2019-07-07 05:05:39

标签: php datetime timezone

我使用webscraping.its在柏林时区中以字符串形式获取日期时间,我想将其转换为莫斯科时间。

我这样做如下:

$date_str ="7/4/2019 3:30";
  try {
      $date = new DateTime($date_str, new DateTimeZone('Europe/Berlin'));
      $date->setTimezone(new DateTimeZone('Europe/Moscow'));
      $date_in_moscow = $date->format('d/m/Y H:i');
  } catch (Exception $e) {
       echo "error";
  }

当$ date_str中的day有一个数字,如“ 7”(不为零)时,一切都可以。但是当day有2个数字,如“ 17”时,catch块将被调用。 我尝试使用('j / n / Y H:i')作为格式,但结果相同。 我不知道为什么?是因为格式类型吗?

2 个答案:

答案 0 :(得分:0)

将格式$ date_str更改为“ m / d / Y H:i”,例如“ 7/17/2019 3:30”

答案 1 :(得分:0)

您面临的问题是由于您使用的是日期格式为 d / m / Y 的日期字符串,而2019-07-07 10:22:20,314 [myid:2] - INFO [ProcessThread(sid:2 cport:-1)::PrepRequestProcessor@653] - Got user-level KeeperException when processing sessionid:0x1013041373b0073 type:setData cxid:0x5732 zxid:0x4e0011f115 txntype:-1 reqpath:n/a Error Path:/kafka/brokers/topics/partition-name/partitions/7/state Error:KeeperErrorCode = BadVersion for /kafka/brokers/topics/partition-name/partitions/7/state 希望日期字符串为 m / d / Y 格式。

为了绕过此问题,您需要按以下方式更改函数调用:

DateTime::__construct