开发者社区> 问答> 正文

URL中的日期dd / mm / yyyy?mysql

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

http://www.website.com/_parameter=20/02/2000

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

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

展开
收起
保持可爱mmm 2020-05-17 18:17:42 571 0
1 条回答
写回答
取消 提交回答
  • 使用时,strotime()请确保使用有效的datetime格式。否则strtotime()会返回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 如果您不小心切换了日期和月份strtotime(),则日期将返回false,因为日期无效。

    18/04/2017 // error 18/12/2017 // error 04-18-2018 // error 12-18-2017 // error 上面的例子很简单。但是,当日期不确定时,您可能会遇到问题。例如:

    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::createFromFormat()解析日期并返回一个DateTime()对象,您可以从该对象获得Unix时间戳,将日期转换为另一种格式,或者将其与其他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'); 也可以看看:

    使用PHP中的比较运算符比较DateTime对象 对于您的特定情况,以下代码将起作用:

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

    2020-05-17 18:20:27
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像