Php URL中的日期dd/mm/yyyy

Php URL中的日期dd/mm/yyyy,php,mysql,date,datetime,Php,Mysql,Date,Datetime,我正在URL中以以下格式传递日期(dd/mm/yyyy): 我使用以下PHP将其转换为YYYY-MM-DD格式 <?php $D->query = ''; if ($this->param('_parameter')) $D->query = date('Y-m-d', strtotime($this->param('_parameter'))); ?> 上述文件返回以下内容: SELECT idtask FROM task

我正在URL中以以下格式传递日期(dd/mm/yyyy):

我使用以下PHP将其转换为YYYY-MM-DD格式

<?php

    $D->query = '';

        if ($this->param('_parameter')) $D->query = date('Y-m-d', strtotime($this->param('_parameter'))); 

?>
上述文件返回以下内容:

SELECT idtask FROM task WHERE unfinish=1 AND date LIKE '%".$D->query."%' "
1970-01-01

使用时,需要确保使用的是。否则,
strotime()
将返回
false
或给您一个意外值

使用XX/XX/XXXX格式的日期假定为美国格式,这意味着前两位数字表示月份,后两位数字表示月份的日期,最后四位数字表示年份。使用破折号时,日期假定为欧洲格式。例如:

04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017
04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017
如果您意外地切换了日期和月份
strotime()
将返回false,因为日期无效

18/04/2017 // error
18/12/2017 // error
04-18-2018 // error
12-18-2017 // error
上面的例子是直截了当的。但当日期模棱两可时,你可能会遇到问题。例如:

04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017
04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017
在上面的示例中,通过切换日期和月份,我们仍然可以获得有效日期,这可能会在应用程序中导致意外结果。为了解决这些潜在问题,建议使用解析日期并返回一个对象,您可以从中获取该对象,或者使用它与其他
DateTime
对象进行比较

// Parse US date format
$date1 = DateTime::createFromFormat('m/d/Y', '04/18/2017');

// Get Unix timestamp of 1493581268
$timestamp = $date1->getTimestamp();

// Parse European date format
$date2 = DateTime::createFromFormat('d-m-Y', ''18-04-2017);

// Get MySQL format (ISO-8601) of 2017-04-18
$mysqlDate = $date2->format('Y-m-d');
另请参见:


对于您的特定情况,以下代码将起作用:

$date = $date1 = DateTime::createFromFormat('m/d/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20

在这里我要发布一个两行的答案,呵呵+1.您应该真正格式化、缩进和使用变量,而不是试图在一行中完成所有操作。使调试变得困难。而且您确实需要一个
,如
?\u参数=20/02/2000