【问题标题】:how to change the date display without changing its posting format如何在不更改过帐格式的情况下更改日期显示
【发布时间】:2024-05-16 12:10:02
【问题描述】:

我正在使用 twitter bootstrap、css 和 js 开发一个 php 项目;我的问题是,当我使用引导日期选择器时,值是格式如下的帖子:dd-mm-yyyy

这是我的代码:

<div class="control-group">
    <label class="control-label">Next Call</label>
    <div class="controls">
    <div class="input-append date" id="datepicker" data-date="dateValue: Customer.DateOfBirth" data-date-format="dd-mm-yyyy">
    <input type="text" name="date" data-bind="value: Customer.DateOfBirth" readonly />
    <span class="add-on"><i class="icon-calendar"></i></span>
</div>   
    </div>
    </div>

现在在我的另一个按日期搜索的页面中,我必须根据数据库提交日期,以便匹配并给我搜索值,所以我这样做是为了匹配数据库中的值,因为我们知道数据库将它存储在 @987654322 @ 格式,所以我将行更改为:

 <div class="input-append date" id="datepicker" data-date="dateValue: Customer.DateOfBirth" data-date-format="dd-mm-yyyy">

但现在我的问题是,当用户选择日期值时,它在文本框中显示为: yyyy-mm-dd 我想将其显示为 dd-mm-yyyy 并希望将其发布为 yyyy-mm-dd。我怎样才能实现它?

【问题讨论】:

  • 你是说接受dd-mm-yyyy格式的用户输入,改成yyy-mm-dd查询数据库?
  • @ Amal Murali :实际上,当我们单击日历图标时,它会显示日历,当我们选择它在文本框中填充的日期为:dd-mm-yyyy 作为默认值。在数据库中它存储asyyyy-mm-dd.so 为了匹配来自数据库的这个值,我将格式更改为 yyyy-mm-dd.so 现在我希望它以 yyyy-mm-dd 格式进入数据库,但想显示 dd-mm-yyyy进入文本框。

标签: php twitter-bootstrap datepicker date-format


【解决方案1】:

假设

  1. 所以我的理解是,您目前能够在客户端将日期显示为 dd-mm-yyyyyyyy-mm-dd

  2. 然后您将此值作为表单提交到站点 (php):POSTGET

解决方案

给出上述假设,您就有两个基本的选项。一种是使用客户端技术(例如JS)在发送到服务器之前更改日期,或者在服务器端更改日期(通过PHP)。

鉴于您已包含标签PHP 而不是JS;我们将专注于此。

方法一

$date     = $_POST['date'];                                         // 14-10-2013
$new_date = preg_replace('/(\d+)-(\d+)-(\d+)/', '$3-$2-$1', $date); // 2013-10-14

方法二

$date       = $_POST['date'];                                        // 14-10-2013
$date_array = explode('-', $date);
$new_date   =  $date_array[2].'-'.$date_array[1].'-'.$date_array[0]; // 2013-10-14

方法3

$date        = $_POST['date'];                 // 14-10-2013
$date_object = new DateTime($date);
$new_date    = $date_object->format('Y-m-d');  // 2013-10-14

实施

您可以使用上述任何一种方法并将您的代码更改为:

$insert_date  = mysql_real_escape_string($new_date);
$query        = "INSERT INTO `comments` SET `date` = '{$insert_date}'";

所以你的最终代码如下所示:

$date         = $_POST['date']; //Date from user input
$date_object  = new DateTime($date);
$new_date     = $date_object->format('Y-m-d');
$insert_date  = mysql_real_escape_string($new_date);
$query        = "INSERT INTO `comments` SET `date` = '{$insert_date}'";

【讨论】:

  • @ steven:这是我插入日期的代码: 如果我在 datepicker 中使用 dd-mm-yyyy 格式,那么如何将其插入为 yyyy-mm-dd。
  • 好的,那(见更新的答案)应该希望为你澄清一些事情?
  • @Steven:我已经这样做了,但它在数据库中给出了空值。我已将日期字段设为 VARCHAR。
  • @Steven :非常感谢,亲爱的。它的工作就像一个魅力。非常感谢您的宝贵帮助。
【解决方案2】:

你可以有一行代码,比如-

//suppose $_POST['date'] has 22-09-1990
$dd = $_POST['date'];
$dates = explode('-', $dd);

现在您的查询将像 -

$qry = "INSERT INTO TBLXZ (datecol) VALUES('".$dates[2]."-".$dates[1]."-".$dates[0]."')";

我假设表 TBLXZ 只有一列 datecol,其类型为 Datetime

希望这会有所帮助。

【讨论】: