gpt4 book ai didi

php - 转换并插入两种日期格式MYSQL

转载 作者:行者123 更新时间:2023-11-29 13:39:28 26 4
gpt4 key购买 nike

我遇到了管理日期的问题,有些日期通过了,有些则没有。我想为 mysql 生成一个可插入的日期。有两种可能的发布日期类型

yyyy-mm-dd //should go without conversion
m/d/yyyy // should be converted

我正在用这个

 $date = $_REQUEST['date'];
$date_regex = '/(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d/';
if(preg_match($date_regex, $date)){
$date = DateTime::createFromFormat('m/d/Y',$date)->format('Y-m-d');}

问题

我意识到这个正则表达式对于像这样的日期是失败的

2/5/2013 

但一直在工作

 12/12/2013

所以我删除了它,但仍然

DateTime::createFromFormat('m/d/Y',$date)->format('Y-m-d');

m/d/yyyy 也失败

在过去的 6 个小时里,这个约会的事情让我头晕目眩。

最佳答案

在这种情况下,不需要使用 DateTime::createFromFormat 因为 m/d/yyyyrecognized date formats 之一(参见“美国月、日和年”)。只需将其转换为 DateTime 对象并让构造函数处理格式并忘记正则表达式:

$date = $_REQUEST['date'];
$datetime = new DateTime($date);
$datex = $datetime->format('Y-m-d');

DateTime::createFromFormat('m/d/Y',$date) 对于像 2/5/2013 这样的日期失败的原因是因为你强制它具体为“m/d/Y”,而该日期符合该模式。您可以看到所有日期格式的列表here 。具体来说,m 期望有一个前导零(例如 02),因此当您给它一个没有前导零时,它不会识别它。 d 也是如此。在这种情况下,您必须分别使用 nj。但是,就像我说的,让构造函数为您完成艰苦的工作。

关于php - 转换并插入两种日期格式MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18286458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com