当前位置: 首页 > 面试题库 >

URL中的日期dd / mm / yyyy

朱天逸
2023-03-14
问题内容

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

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

我正在使用以下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()请确保使用有效的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


 类似资料:
  • 问题内容: 我有一个日期列,其中日期格式为 在SQL Server中。有什么可能的方法来检索日期格式为 在选择语句中? 问题答案: 试试这个: 源链接 附录1: 如我的评论中所述,您需要先将字段转换为类型,然后才能执行上述操作。此示例应在您的SQL Server上运行: 如果出现此异常: 消息242,级别16,状态3,行1将varchar数据类型转换为datetime数据类型导致超出范围的值。 然

  • 问题内容: 我正在尝试从转换日期。我已经使用了mktime()函数和其他函数,但是我似乎无法使其工作。我已经成功地将原始日期用作定界符,但更改格式并将其与交换时没有成功。 任何帮助将不胜感激。 问题答案: 通过查看各个组成部分之间的分隔符,可以消除或格式中的日期的歧义:如果该分隔符是斜杠(),则假定为American ;否则,为0。反之,如果分隔符是破折号()或点(),则采用欧洲格式。 使用默认的

  • 我有一个格式为。我希望它的格式为 下面是我尝试进行此转换的示例util: 但是,我得到的输出不是格式。 请告诉我如何将从格式化为

  • 我从格式为yyyy-mm-dd(加上不需要的hh-mm-ss)的API中获取日期结果。我想在jQuery中将其转换为dd-mm-yyyy格式,最简单/最快的方法是什么? 目前我正在使用:(对于返回的字符串yyyy-mm-dd): 但是好像有点啰嗦。

  • 问题内容: 我有一个日期为dd-mm-yyyy格式的日期(在我的数据库内)。我需要将其转换为dd-mm-yy格式。我从db中检索了日期并将其存储在字符串中。 1990并不是完全需要的,只需要90.使用java中的split()我尝试了一些东西,但它不会帮助我。任何人都可以帮忙。任何帮助将不胜感激。 问题答案: 试试下面的代码

  • 我想将日期从07/02/2019转换为2019年7月07日。我的输入值是07/02/2019我想与目标值2019年7月07日进行比较.....请帮助我... public static void main(string[]args)引发ParseException{ 输出:Mon Jul 01 00:00:00 IST 2019这不是我的期望值