【问题标题】:How to Format the Bootstrap DatePicker for PHP如何格式化 PHP 的 Bootstrap DatePicker
【发布时间】:2015-08-10 05:24:06
【问题描述】:

我正在使用这个Bootstrap DatePicker:代码如下

<input class="datepicker" name="date">

<script> //date picker js
  $(document).ready(function() {  
      $('.datepicker').datepicker({
         todayHighlight: true,
         "autoclose": true,
      });
  });   
</script>

我在这里的 PHP 中捕获了它:

$date = $_POST['date'];

问题是 DatePicker 在我的 $date 变量中需要 yyyy-mm-dd 时为我提供了格式 dd/mm/yyyy。如何重新格式化?

【问题讨论】:

    标签: php twitter-bootstrap datepicker


    【解决方案1】:

    我确定你可以在日期选择器中设置它,但是在 PHP 中你可以使用:

    $date = DateTime::createFromFormat("d-m-Y", $_POST['date'])->format('Y-m-d');
    

    并且来自 Bootstrap DatePicker 文档: http://bootstrap-datepicker.readthedocs.org/en/latest/options.html#format

    【讨论】:

    • 您确定 $_POST['date'] 包含值吗?那是dd-mm-yyyy的格式吗?你 var_dump($_POST) 来检查你的 POST 数组。
    【解决方案2】:

    您可以轻松调整https://stackoverflow.com/a/2487938/747609 以满足您的需要。沿着这条线的东西应该可以解决你的问题:

    $originalDate = $_POST['date'];
    $newDate = date("Y-m-d", strtotime($originalDate));
    

    【讨论】:

    • 这不能解决问题,因为日期格式 "dd/mm/yyyy" 对 strtotime 无效
    【解决方案3】:

    ******解决方案******

    为了解决这个问题,我看到变量“日期”的格式为 dd/mm/yyyy 并且是一个字符串。我能够解析它并以正确的格式重建为日期。

    list($m,$d,$y) = explode("/",$_POST['date']);
    $timestamp = mktime(0,0,0,$m,$d,$y);
    $date = date("Y-m-d",$timestamp);
    

    *注意 - 我还必须在查询中将 $date 变量括在单引号中:

    $sql = "INSERT INTO tableName (..., date, ...)
            VALUES (..., '".$date."', ...)";
    

    【讨论】:

    • 有几件事...您说格式是dd/mm/yyyy,但您的代码将第一部分视为月,将第二部分视为日(即mm/dd/yyyy)。你最好通过strtotime 进行转换。顺便说一句,PHP 将带有斜杠的日期视为英国格式 (dd/mm/yyyy),但将带有破折号的日期视为美国格式 (mm-dd-yyyy)。
    • 我明白你的意思。太久不记得它是否是 mm/dd/yyy(可能是),但我确实记得非常小心,因为我试图在这里建立我的代表。在这种情况下,'strtotime' 对我不起作用,但它确实适用于 timePicker 字符串转换。抱歉,我无法澄清这一点。
    【解决方案4】:

    试试这个页面http://php.net/manual/en/datetime.createfromformat.php。将字符串转换为日期对象并输出为格式化日期

    你想要 Y-m-d。

    【讨论】:

    • 这很难处理,因为我的问题是我不知道在哪里格式化日期,在 php 端或 html 端。
    • 阅读有关 DateTime 格式选项的信息 - 您不需要 YY-MM-DD,您需要 Y-m-d。链接:php.net/manual/en/datetime.createfromformat.php
    • 阅读 OP,他想要这种格式 yyyy-mm-dd 4 位、2 位、2 位。您的将给出 yy-m-d ,其中没有前导零。
    • 我引用了我上一条评论中的 PHP 链接:“D 和 l - 一天的文本表示”。所以大写 D 肯定不是解决方案。“d 和 j - 月份中的日期,带或不带前导零的 2 位数字” - 所以小写是解决方案。这同样适用于月份。 “Y - 年份的完整数字表示,4 位数字”。所以 PHP 的日期函数或 DateTime 对象中“Y-m-d”的格式是 4 位年-2 位月-2 位日。您正在查看的页面用于“本地化符号”,符号表用于解释符号 - 而不是 format 函数的格式。
    • 抱歉,我已更改它以反映正确答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多