【问题标题】:Carbon/DateTime: The timezone could not be found in the databaseCarbon/DateTime:在数据库中找不到时区
【发布时间】:2016-08-12 16:05:34
【问题描述】:

我正在读取包含日期时间字段的 CSV 文件,但是当我尝试通过执行 $date = new Carbon($row['date']) 将日期转换为 Carbon 时,我收到以下错误之一:

DateTime::__construct(): Failed to parse time string (09/07/2014 16:55:22 MEST) at position 20 (M): The timezone could not be found in the database

DateTime::__construct(): Failed to parse time string (24/01/2014 16:57:27 MET) at position 0 (2): Unexpected character

似乎 PHP 无法识别 MET/MEST 时区。如何动态转换任何非标准时区以创建 Carbon/DateTime 对象?

【问题讨论】:

    标签: php datetime php-carbon


    【解决方案1】:

    格式可能不是可识别的格式。改用这个。它只适用于 MET,因为 MEST 不是 valid timezone

    $date = Carbon::createFromFormat('d/m/Y H:i:s T', $row['date']);
    

    【讨论】:

    • 打败我..这就是他需要的++
    • 那我该怎么处理那些无效的格式呢?例如,我可能还会得到 MEST 或 CEST(中欧夏令时同一时区),除 PHP 之外的某些系统将其识别为有效时区。
    • 您可能需要创建一系列可能性及其等价物,并使用它来替换时区。
    • 希望有一些标准的方法可以做到这一点,但str_replace(['MEST', 'CEST'], ['MET', 'CET'], $row['date']) 必须这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多