如果我有一个格式为mm-dd-YYYY的PHP字符串(例如,10-16-2003),我如何正确地将其转换为日期,然后是YYYY-mm-dd格式的日期时间?我同时要求Date和DateTime的唯一原因是,我需要一个在一个地方,另一个在不同的地方。
当前回答
对我来说,这样做很有效:
$stringDate = "2022-02-24T17:15:00"; (如果你只发送日期“2022-02-24”,它会将时间填充为00:00:00)。
$dateFormat = 新的日期时间($miStringDate);
其他回答
要解析日期,你应该使用: 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”;
您需要小心使用m/d/Y和m-d-Y格式。PHP认为/表示m/d/Y, -表示d-m-Y。在这种情况下,我将显式地描述输入格式:
$ymd = DateTime::createFromFormat('m-d-Y', '10-16-2003')->format('Y-m-d');
这样你就不会因为某个解释而心血来潮。
我尝试了上面所有的答案,但失败了,在我的情况下,我构建了一个函数,获得以下格式“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);
对我来说,这样做很有效:
$stringDate = "2022-02-24T17:15:00"; (如果你只发送日期“2022-02-24”,它会将时间填充为00:00:00)。
$dateFormat = 新的日期时间($miStringDate);
$d = new DateTime('10-16-2003');
$timestamp = $d->getTimestamp(); // Unix timestamp
$formatted_date = $d->format('Y-m-d'); // 2003-10-16
编辑:您还可以将DateTimeZone传递给DateTime()构造函数,以确保创建所需时区的日期,而不是服务器默认的日期。
推荐文章
- 解析日期没有时区javascript
- 如何创建今天午夜和明天午夜的Java日期对象?
- 将字符串数组转换为字符串
- 使用PHP加密和解密密码的最佳方法是什么?
- 如何实现一个好的脏话过滤器?
- PHP中的三个点(…)是什么意思?
- Guzzlehttp -如何从guzzle6得到响应的正文?
- 移动一个文件到服务器上的另一个文件夹
- Laravel中使用雄辩的ORM进行批量插入
- PHP 5.4调用时引用传递-容易修复可用吗?
- c#:如何获得一个字符串的第一个字符?
- String类中的什么方法只返回前N个字符?
- 格式化字节到千字节,兆字节,千兆字节
- 如何在PowerShell格式化日期时间
- 我可以将c#字符串值转换为转义字符串文字吗?