【问题标题】:strtotime() doesn't recognize german shortform of date (dd.mm.YY)strtotime() 无法识别德语缩写日期 (dd.mm.YY)
【发布时间】:2016-02-11 15:41:04
【问题描述】:

我有很多带有多个时间戳的数据,我刚刚意识到有些数据在“dd.mm.YYYY”中,这与date("Y-m-d", strtotime($input)); 配合得很好,但有些在“dd.mm.YY”中,这不再适用- 它总是返回当前日期。

我的问题是我的数据太大而无法通过编辑手动解决此问题。有什么办法可以让YYYY-mm-dd 脱离mm.dd.YY 吗?

【问题讨论】:

  • 你能举一些例子日期,这不起作用吗?
  • 20.02.71 1971 年 2 月 20 日
  • if (strlen($input) == 8) { $input = substr($input, 0, 6) . '19' . substr($input, -2); }
  • @AbraCadaver 那个日期,以及我尝试过的所有其他日期,对我来说都很好。 var_dump(date("Y-m-d", strtotime("20.02.71"))); 输出string(10) "1971-02-20"
  • @Phil 你用的是什么版本的 PHP?

标签: php date timestamp


【解决方案1】:

给你...

$date = "20.02.71"; // sample date... (common German format)
$date = DateTime::createFromFormat('d.m.y', $date);
echo $date->format('Y-m-d');

将导致:

1971-02-20

创建一个 DateTime 对象,然后将其格式化为您想要的任何内容...

【讨论】:

    【解决方案2】:

    您可以将. 替换为-,您可以执行以下操作:

    $date = str_replace(".", "-", "mm.dd.YY")
    

    这会返回

    mm-dd-YY
    

    您可以使用date_parse_from_format 将任何甲酸盐转换为您指定的甲酸盐。

    date_parse_from_format("y-m-d", $date);
    

    它返回一个包含非常有用的信息的数组,例如月份、年份等。

    【讨论】:

    • 您不需要使用date_parse_from_format("Y-m-d", $date); 而不是YYYY-mm-dd,因为格式参数需要createFromFormat() 接受的格式吗?
    • @Henders 确实如此。很好发现
    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 2016-05-09
    • 2020-04-26
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多