【问题标题】:Convert String to date (european to american) [duplicate]将字符串转换为日期(欧洲到美国)[重复]
【发布时间】:2017-01-10 14:30:37
【问题描述】:

我在表单上有一个字符串:“dd/mm-yyyy”,其中 dd 是带有两位数的月份,mm 是带有两位数的月份,yyyy 是带有四位数的年份。

我需要将其存储在我的数据库中。我试过了

$dato = date('d/m-Y' ,strtotime($_POST['dag'] )

但这显然行不通。在我的数据库中,日期显示为 yyyy-mm-dd。如何正确地将字符串转换为正确的格式?

【问题讨论】:

  • 在数据库上,它必须被格式化为 MYSQL 日期,即YYYY-MM-DD
  • 出于好奇:这是什么奇怪的格式,你将/- 混合在一起?以前从未见过。
  • @FranzGleichmann ... 显然地球上没有格式:en.wikipedia.org/wiki/Date_format_by_country ... 也许他们来自外太空?
  • @FranzGleichmann 它在书面挪威语中更常见,但我想我们的官方格式是 dd-mm-yyyy。我只是想知道这是否可能。 =)

标签: php date format date-conversion


【解决方案1】:

strtotime 不接受你的时间字符串格式,所以它返回 false。可以使用DateTime::createFromFormatdate_create_from_format,手动here

DateTime::createFromFormat('d/m-Y', $_POST['dag']);

查看live demo

<?php

var_dump(DateTime::createFromFormat('d/m-Y', '11/01-2017'));

输入:

object(DateTime)#1 (3) {
  ["date"]=>
  string(26) "2017-01-11 14:34:53.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}

【讨论】:

  • ... 或 DateTime::createFromFormat('d/m-Y', $_POST['dag'])-&gt;format('Y-m-d'); 将其转换为数据库使用的格式。
【解决方案2】:

尝试将/ 替换为-,如下所示:

$date = "02/04-2016";
$dateNew = str_replace("/","-",$date);

【讨论】:

    【解决方案3】:

    你可以使用DateTime::createFromFormat:

    $time = '12/3-1987';
    $data = DateTime::createFromFormat('d/m-Y', $time);
    echo $data->format('Y-m-d'); //1987-03-12
    

    sandbox

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      相关资源
      最近更新 更多