在我的PHP代码中,我使用函数转换日期?

时间:2016-02-12 17:51:35

标签: php html mysql date

(因为John Conde错误地将其标记为已回答,因为他不理解我的问题,所以我必须编辑这篇文章。)

在我的PHP应用程序中,用户应该能够以strtotime()函数理解的任何格式输入日期。这是输入:

    <label>Release Date:</label>
    <input type="text" name="release_date"/>&nbsp;<span>Use any valid 
           date format</span>
    <br />

然后索引页面从表单中绘制它并将其存储在数据库中,就像这样......

$release_date = $_POST['release_date'];

并将其显示在列表页面上,如下所示:

<td><?php $date = date('n/j/Y', strtotime($product['releaseDate'])); 
                      echo $date; ?></td>

我知道如何将日期从一种格式转换为另一种格式。显示面很好。但是WHERE和HOW如何获取用户输入 - 以任何日期格式输入strtotime()函数可以解释 - 并将其转换为可读格式进入数据库?现在,如果我输入任何不是'xxxx-xx-xx'格式的日期,它将被读为0,并以UNIX 0,1 / 1/1970出现。

谢谢。

1 个答案:

答案 0 :(得分:1)

某些日期可以找到,你可以这样做,但是某些日期,例如从1月1日到12日的任何日期都会模棱两可,因为你无法区分月份和日期。如果您允许两位数的年份,那么您在2001年至2012年期间也会遇到问题 - 2001年至2031年的年份与年份相冲突。

您可以要求用户在某些情况下澄清,但这更复杂。

别忘了添加:

    $todate = stripslashes(trim($_POST['form-todate']));

杀死任何潜在的SQL注入。

此处还有日期验证:

    function validateDate($date, $format = 'Y-m-d H:i:s') {
        $d = DateTime::createFromFormat($format, $date);
        return $d && $d->format($format) == $date;
    }

函数已从此answerphp.net

复制

您可以使用各种格式将输入字符串传递给此函数,直到一个或多个匹配项(您可能不希望时间在那里,然后将其取出)。

如果有多个格式匹配 - 请询问用户确认哪一个。

顺便说一句,如果你正在通过网络化这里有一个很棒的bootstrap js技术我曾经使用过(我认为)https://eonasdan.github.io/bootstrap-datetimepicker/

它会在您的输入字段中生成一个迷你日历,这样用户就不必输入任何内容 - 只需点击即可。