如果我有一个格式为mm-dd-YYYY的PHP字符串(例如,10-16-2003),我如何正确地将其转换为日期,然后是YYYY-mm-dd格式的日期时间?我同时要求Date和DateTime的唯一原因是,我需要一个在一个地方,另一个在不同的地方。
当前回答
我尝试了上面所有的答案,但失败了,在我的情况下,我构建了一个函数,获得以下格式“YYYY/mm/dd”的日期字符串。所以我认为像这样爆炸弦会更好:
$old_date = explode('/', $coming_date_str);
new_data =美元old_date old_date美元[0]。”——“。[1],”——“。美元old_date [2];//将字符串转换为上述所有帖子并完成
$new_date = date('Y-m-d', strtotime($new_data));
$new_date = DateTime::createFromFormat("Y-m-d", new_date);
其他回答
如果你的格式是dd-mm-yyyy,那么在PHP中它将不能正常工作。在PHP文档中,他们有以下指导方针。
m/d/y或d-m-y格式的日期可以通过查看消除歧义 各部件之间的分离器:如果分离器是一个 /,则假定美式的m/d/y;然而如果 分隔符是一个破折号(-)或一个点(.),然后是欧洲d-m-y格式 假定。
所以,你不能随心所欲地使用。当你尝试使用dd/mm/yyyy格式时,它将删除FALSE。你可以用下面的方法进行调整。
$date = "23/02/2013";
$timestamp = strtotime($date);
if ($timestamp === FALSE) {
$timestamp = strtotime(str_replace('/', '-', $date));
}
echo $timestamp; // prints 1361577600
要解析日期,你应该使用: DateTime: createFromFormat ();
Ex:
$dateDE = "16/10/2013";
$dateUS = \DateTime::createFromFormat("d.m.Y", $dateDE)->format("m/d/Y");
但是,要小心,因为这会崩溃:
PHP Fatal error: Call to a member function format() on a non-object
你实际上需要检查格式是否正常,首先:
$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格式错误,应该是“16.10.2013”;
从任意字符串中创建日期:
$date = DateTime::createFromFormat('d-m-y H:i', '01-01-01 01:00');
echo $date->format('Y-m-d H:i');
$d = new DateTime('10-16-2003');
$timestamp = $d->getTimestamp(); // Unix timestamp
$formatted_date = $d->format('Y-m-d'); // 2003-10-16
编辑:您还可以将DateTimeZone传递给DateTime()构造函数,以确保创建所需时区的日期,而不是服务器默认的日期。
如果您的日期格式为“07/May/2018”,并需要将其改为“2018-05-07”,以便与MySQL兼容,您可以使用:
if (!empty($date)) {
$timestamp = strtotime($date);
if ($timestamp === FALSE) {
$timestamp = strtotime(str_replace('/', '-', $date));
}
$date = date('Y-m-d', $timestamp);
}
推荐文章
- Printf与std::字符串?
- 不区分大小写的“in”
- 解析日期字符串并更改格式
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- 如何从关联PHP数组中获得第一项?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- PHP/MySQL插入一行然后获取id
- 我如何排序一个多维数组在PHP
- 如何在PHP中截断字符串最接近于一定数量的字符?
- PHP错误:“zip扩展名和unzip命令都没有,跳过。”
- Nginx提供下载。php文件,而不是执行它们
- Java SimpleDateFormat("yyyy-MM-dd' t ' hh:mm:ss' z '")给出的时区为IST
- Json_encode()转义正斜杠
- 在Java中转换字符串到日历对象
- 如何在PHP中捕获cURL错误