【问题标题】:CodeIgniter/JQuery/MySQL DateTimeCodeIgniter/JQuery/MySQL 日期时间
【发布时间】:2011-06-14 15:03:40
【问题描述】:

在我的 CodeIgniter 应用程序中,我使用了一个 Jquery 日历弹出窗口,它还捕获用户设置的时间,所以最终结果看起来像:MM-DD-YYYY HH:MM,我正在存储这个在 MySQL 中放入一个 DateTime 字段,即:YYYY-MM-DD HH:MM:SS。将日期/时间推送到 MySQL 以便正确保存并从 MySQL 中拉出并以相反格式呈现在屏幕上的最佳(最有效)方法是什么?谢谢!

【问题讨论】:

    标签: php javascript jquery mysql datetime


    【解决方案1】:

    最有效的方法是使用ISO 8601 标准在客户端和服务器之间传递日期值。由于客户端和服务器以字符串形式进行对话,因此您需要先将日期解析为字符串,然后再以任何一种方式发送。我更喜欢的最佳格式是 UTC 组合日期和时间

    2011-06-14T13:57Z

    没有空格而且很干净。然后你必须parse it on the server side(使用PHP应该相对容易)并在客户端解析它。

    出于显示目的,我更喜欢extend JavaScript's Date.prototype 包含一个模仿PHP's date format 的格式函数。

    一旦您从上面包含链接脚本,您就可以在服务器端执行此操作 -

    var today = new Date();
    alert(today.format('m-d-Y H:i')); //displays "06-14-2011 11:18"
    

    祝你好运!

    【讨论】:

      【解决方案2】:

      我认为您应该使用strptime() 函数来解析从您使用和使用mktime() 的jQuery 日历收到的日期:

      // Parse the time based on your jQuery calendar's format
      $parts = strptime($calendar_value, '%m-%d-%Y %H:%M');
      
      if ( ! empty($parts) )
      {
        // Create a Unix timestamp
        $timestamp = mktime($parts['tm_hour'], $parts['tm_min'], 0, $parts['tm_mon'] + 1, $parts['tm_mday'], $parts['tm_year'] + 1900);
      
        // Create a string representation of the Unix timestamp
        $date = date(DATE_ISO8601, $timestamp);
      }
      

      您需要使用$date 来插入您的数据库。有一个名为“strtotime”的函数将尝试解析人类可读格式的日期,但我怀疑它是否能够确定月份或日期是否先出现,特别是如果它们都低于 12,这就是我选择的原因改为使用“strptime”。

      当您从 MySQL 中提取数据时,您可以简单地使用 date()strtotime() 函数来填充日历:

      echo date('m-d-Y h:i', strtotime($mysql_date));
      

      【讨论】:

        猜你喜欢
        • 2012-04-28
        • 2018-01-28
        • 2016-08-07
        • 1970-01-01
        • 2017-10-12
        • 2019-12-13
        • 1970-01-01
        • 2011-07-18
        • 1970-01-01
        相关资源
        最近更新 更多