开发者社区 问答 正文

日期数组元素到PHP数组变量

我在for循环(数据库中的数据)的HTML代码中有datepicker元素(多个datepicker)

它显示良好,让用户为不同的产品选择不同的日期。在提交时,通过发布将这些日期分配到php变量中。

但是元素仍然是字符串而不是日期。如何在php中更改字符串的日期

    <input type="text" 
           name="expirydate[]" 
           id="expirydate<? echo $SNO;?>" 
           autocomplete="off"  
           class="expirydate" 
           value="<? $DateToday=date('Y-m-d');
                     $ShowDate1 = explode("-", $DateToday);
                     $ShowDate2 = "$ShowDate1[2]/$ShowDate1[1]/$ShowDate1[0]";
                     echo $ShowDate2; ?>"
    />
</td>
        $('.expirydate').datepicker({ minDate: 0 }); 
});

for ($x=0; $x<=$TotalCount-1; $x++)
    {
    $expirydate1 = $expirydate[$x];
    $n1 = explode("/", $expirydate1);
    echo $n1[0] . "--" . $n1[1] . "--" . $n1[2] . "<br>";
    $n2 = "$n1[2]-$n1[1]-$n1[0]";
    $n22 = date_create($n2);
    $n3 = date_format($n22,"Y/m/d H:i:s");
}  

展开
收起
社区秘书 2019-11-27 16:32:11 842 分享 版权
阿里云 AI 助理回答

在您的PHP代码中,您已经尝试将字符串转换为日期对象并重新格式化它。但是,根据您提供的信息,似乎存在一些混淆和潜在的错误。首先,让我们澄清一下如何正确地从字符串格式转换到日期对象,然后再转换回您需要的格式。

假设您通过表单提交获得了日期字符串(例如 "dd-mm-yyyy" 格式),并且您希望将其转换为日期对象并在PHP中以 "Y/m/d H:i:s" 格式存储或使用。这里是一个简化的步骤说明:

  1. 确保提交的日期格式是确定的:首先确认前端提交的日期格式是一致且预期的,比如 "dd-mm-yyyy"。

  2. 使用DateTime::createFromFormat()方法创建日期对象:这个方法允许您指定输入日期的格式,然后创建一个 DateTime 对象。

  3. 格式化日期对象:一旦有了 DateTime 对象,您可以使用 format() 方法将其转换为任何您想要的格式。

基于您的代码示例,这里是一个修正后的例子:

// 假设 $dateStr 是从表单获取的日期字符串,例如 "25-04-2023"
$dateStr = $_POST['your_date_input_name']; // 请替换为实际的表单字段名

// 使用正确的格式解析字符串为 DateTime 对象
$dateTime = DateTime::createFromFormat('d-m-Y', $dateStr);

// 检查日期是否成功创建
if ($dateTime === false) {
    echo "无法解析日期: " . $dateStr;
} else {
    // 将日期格式化为您需要的格式
    $formattedDate = $dateTime->format('Y/m/d H:i:s');
    echo "转换后的日期: " . $formattedDate;
    // 现在您可以将 $formattedDate 保存到数据库或者进行其他操作
}

这段代码首先尝试按照 "d-m-Y" 格式解析日期字符串,如果成功,则将其格式化为 "Y/m/d H:i:s"。请注意,您需要确保 $dateStr 变量包含实际的表单提交的日期值,并且处理可能的错误情况,比如用户输入的日期格式不正确时的错误处理。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: