Converting string to Date and DateTime
如果我有一个格式为
在第一次约会时使用
1 2 3 4 5 6 |
注意,在
Dates in the m/d/y or d-m-y formats
are disambiguated by looking at the
separator between the various
components: if the separator is a
slash (/), then the American m/d/y is
assumed; whereas if the separator is a
dash (-) or a dot (.), then the
European d-m-y format is assumed.
号
您需要注意M/D/Y和M-D-Y格式。php认为
1 | $ymd = DateTime::createFromFormat('m-d-Y', '10-16-2003')->format('Y-m-d'); |
这样的话,你就不会对某一种解释产生兴趣了。
要分析日期,应使用:日期时间::CreateFromFormat();
前任:
1 2 | $dateDE ="16/10/2013"; $dateUS = \DateTime::createFromFormat("d.m.Y", $dateDE)->format("m/d/Y"); |
。
但是,要小心,因为这会导致:
1 | PHP Fatal error: Call to a member function format() on a non-object |
您实际上需要检查格式化是否正常,首先:
1 2 3 4 5 6 7 | $dateDE ="16/10/2013"; $dateObj = \DateTime::createFromFormat("d.m.Y", $dateDE); if (!$dateObj) { throw new \UnexpectedValueException("Could not parse the date: $date"); } $dateUS = $dateObj->format("m/d/Y"); |
。
现在,您将得到一个可以捕获、传播等的异常,而不是崩溃。
$datede格式错误,应为"2013年10月16日";
1 2 3 4 | $d = new DateTime('10-16-2003'); $timestamp = $d->getTimestamp(); // Unix timestamp $formatted_date = $d->format('Y-m-d'); // 2003-10-16 |
号
编辑:您还可以将date time zone传递给date time()构造函数,以确保为所需时区(而不是服务器默认时区)创建日期。
如果您的格式是dd-mm-yyyy,那么在PHP中,它将无法按预期工作。在PHP文档中,它们具有以下指导原则。
Dates in the m/d/y or d-m-y formats are disambiguated by looking at
the separator between the various components: if the separator is a
slash (/), then the American m/d/y is assumed; whereas if the
separator is a dash (-) or a dot (.), then the European d-m-y format
is assumed.
号
所以,你不能随心所欲地使用。当您尝试将dd/mm/yyyy格式与此一起使用时,它将删除false。您可以对以下内容进行调整。
1 2 3 4 5 6 | $date ="23/02/2013"; $timestamp = strtotime($date); if ($timestamp === FALSE) { $timestamp = strtotime(str_replace('/', '-', $date)); } echo $timestamp; // prints 1361577600 |
。
第一次约会
。
对于新日期
就像我们有日期"2018年5月7日",我们需要日期"2018-05-07"作为MySQL兼容
1 2 3 4 5 6 7 | if (!empty($date)) { $timestamp = strtotime($date); if ($timestamp === FALSE) { $timestamp = strtotime(str_replace('/', '-', $date)); } $date = date('Y-m-d', $timestamp); } |
它对我有用。享受:)