【问题标题】:converting dd/mm/yyyy into yyyy/mm/dd using php and sql使用 php 和 sql 将 dd/mm/yyyy 转换为 yyyy/mm/dd
【发布时间】:2010-11-02 18:20:32
【问题描述】:

我对 php 很陌生。我认为这很简单,但我很困惑。

我有一个表格询问用户他们选择的日期,他们输入的格式是 dd/mm/yyyy

链接的 mysql 数据库格式为 yyyy/mm/dd,据我了解,您无法更改。

我只是想弄清楚我可以在哪里更改日期的格式。它会在发送信息的sql行中吗?

我找到了这个不相关的答案:

<?php 
$date = date("Y-m-d"); 
mysql_query("INSERT INTO date_table VALUES ('$name', '$date')", $db_connection); 
?>

但我无法让它工作......

这是我目前拥有的一些代码的 sn-ps:

// Check for night attending:
    if (empty($_POST['night_attending'])) {
        $errors[] = 'You forgot to enter the night you want to attend.';
    } else {
        $na = mysqli_real_escape_string($dbc, trim($_POST['night_attending']));
    }

.....................................

// Make the query:
        $q = "INSERT INTO guests (first_name, last_name, email, night_attending) VALUES ('$fn', '$ln', '$e', '$na')";       
        $r = @mysqli_query ($dbc, $q); // Run the query.
        if ($r) { // If it ran OK.

.....................................

<p>Night Attending: <input type="text"id="datepicker"  name="night_attending" size="10" value="<?php if (isset($_POST['night_attending'])) echo $_POST['night_attending']; ?>" /></p>

谢谢你们的时间。

阿拉斯泰尔

【问题讨论】:

    标签: php mysql datetime date


    【解决方案1】:

    更新:(基于评论)

    要从表单中获取日期值,您可以这样做:

    $date = date('Y/m/d', strtotime($_POST['night_attending']));
    

    假设:

    • 收到的数据格式有效
    • 您在&lt;form&gt; 标记中使用POST 方法或进行相应更改。

    你需要使用strtotime:

    $date = date('Y/m/d', strtotime($date));
    

    【讨论】:

    • @alsweet:现在$date 变量是以您想要的格式创建的,您可以在查询中使用它。让我们知道还有什么问题?
    • 我不确定如何从表单中为其分配日期,我试过 $date = date('Y/m/d', strtotime($na));然后在帖子中使用 $date: $q = "INSERT INTO guest (first_name, last_name, email, night_attending) VALUES ('$fn', '$ln', '$e', '$date')";
    • 太棒了,效果很好。这就是我的想法,我确实尝试过,但我一定在其中犯了一些错误。奇怪的是它以相反的方式存储月份和日期,因此它使用 Y/m/d 将 02/11/2010 存储为 2010/02/11,但我将其更改为 Y/d/m 来完成这项工作。无论如何,非常感谢您的帮助 Sarfraz!
    • 啊,谢谢,最后一个问题:p,因为它混淆了我的日子和月份1970/01/01,我不明白它如何从表格中选择哪些数字作为日/月/年?只需将其切换为 Y/d/m 即可使其在表格中看起来正确,但在 12 号之后仍然无法正常工作...
    • @alsweet:我不确定,但请确保您验证日期并且提交时格式正确。还可以尝试将此行放在我发布的代码之前:date_default_timezone_set('America/Los_Angeles');。适当地替换您的时区。文档:php.net/manual/en/function.date-default-timezone-set.php
    【解决方案2】:

    我通常使用此代码,将dd/mm/yyyy 转换为yyyy/mm/dd

    $convert = 'dd/mm/yyyy';
    $converted = implode(/, array_reverse(explode(/, $convert)));
    

    我知道有一些内置函数可以做到这一点,但我认为通过这种方式它更可定制。

    【讨论】:

      猜你喜欢
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多