假设您收到一个圣诞日期:2021年12月25日(西班牙语为"25 de Diciembre del año 2021"),以字符串格式"d-m-Y"表示,例如"12-25-2021"。首先从接收到的格式创建一个有效的
DateTime
对象:
var_dump(DateTime::createFromFormat("d-m-Y","25-12-2021", new DateTimeZone("America/Argentina/Buenos_Aires")));
这将生成以下输出:
object(DateTime)#2 (3) {
["date"]=>
string(26) "2021-12-25 10:21:11.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(30) "America/Argentina/Buenos_Aires"
}
现在我们使用format("Y-m-d H:i:s"))从DateTime对象中获取日期字段:
var_dump(DateTime::createFromFormat("d-m-Y","25-12-2021",new DateTimeZone("America/Argentina/Buenos_Aires"))->format("Y-m-d H:i:s"));
这将生成一个输出,其中包含可以直接插入的值:
string(19) "2021-12-25 10:56:30"
简而言之,现在您可以像这样在MySQL中插入格式化日期(“DD-MM-YYYY”):
<?php
$date_input = $_POST['date_input'];
$date_time_obj=DateTime::createFromFormat("d-m-Y","25-12-2021",new DateTimeZone("America/Argentina/Buenos_Aires"));
$str_date=$date_time_obj->format("Y-m-d H:i:s");
?>
现在可以直接从PHP运行MySQL查询:
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
if (mysqli_connect_errno()) {
printf("Error de conexión: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("INSERT INTO table_example (DATE_FIELD) VALUES (?)");
$stmt->bind_param('s', $str_date);
$stmt->execute ();
?>
mysql_*
函数编写新代码。它们已不再维护,社区已开始 弃用过程。看到*红色框*了吗?相反,您应该了解预处理语句,并使用 PDO 或 MySQLi之一。如果您无法决定使用哪个,请参考本文。如果选择PDO,则可以使用这个好的教程。 - Madara's Ghost