【问题标题】:Having trouble formatting a date in javascript from MySQL在 MySQL 的 javascript 中格式化日期时遇到问题
【发布时间】:2019-10-27 17:58:47
【问题描述】:

我在 ajax 方面不是很有经验,并且无法从 MySQL 数据库格式化我的日期。

我尝试过使用 php date() 函数,但似乎无法使其正常工作。在此格式化日期的最佳方法是什么?

  $(document).ready(function(){
    $.ajax({
        type: "GET",
        url: "../api/presentation/read.php",
        dataType: 'json',
        success: function(data) {
            var response="";
            for(var user in data){
                response += "<tr>"+
                "<td>"+data[user].date+"</td>"+
                "<td>"+data[user].title+"</td>"+
                "<td>"+data[user].speaker+"</td>"+
                "<td><a href='update.php?id="+data[user].id+"'>Edit</a> | <a href='#' onClick=Remove('"+data[user].id+"')>Remove</a> | <a href='#' onClick=Active('"+data[user].id+"')>Active</a></td>"+
                "</tr>";
            }
            $(response).appendTo($("#presentations"));
        }
    });
  });

我尝试了一些类似

的方法
"<td><?php echo date("+data[user].date+",dd-mm); ?></td>"+

这给出了“+01am31am[00000000UTCThu, 01 Jan 1970 00:00:00 +0000].01am31UTC+”的输出,我怀疑这是因为没有给日期函数赋值?

我希望输出格式为 dd-mm HH-MM,而不是 MySQL 日期时间格式“2019-10-29 10:00:00”

【问题讨论】:

  • 欢迎来到约旦。你能告诉我们当你使用date 函数时会发生什么以及期望的结果应该是什么?请将其添加到您上面的问题中。
  • 当前输出“2019-10-29 10:00:00”。
  • "我已经尝试过类似 "“+” - 你到底是什么意思?这似乎缺少关于在何处以及如何使用它的东西。您已经在双引号内并在其中使用相同的引号,那么您就有 + 字符。是否要添加或用作连接方法?

标签: javascript php mysql ajax date


【解决方案1】:

您以错误的方式混合 PHP 和 JavaScript。

首先,您必须知道 PHP 是在服务器端执行的,在您的浏览器上存在任何 HTML 或 JavaScript 之前。

也就是说,让我们再次阅读您的尝试:

""

这里,脚本的 PHP 部分将在服务器端运行,并且 data[...] 变量不存在那里,它也在一个字符串内(在双引号之间)。由于这个字符串不是一个有效的日期,它会输出start of unix epoch

要解决这个问题,您需要在此处分离您的关注点。

第一种方式

  1. 您的 ajax 调用的 php 脚本应该以某种有效的日期格式返回日期。我建议使用 ISO8601 格式,因为 JavaScript 在使用 Date 对象时会自动解析这种格式。
  2. 使用 JavaScript 将该日期格式化为所需的输出格式。

第二种方式:

  1. 在 PHP 上使用 date 函数直接转换日期,但是:您完全在 PHP 脚本上完成。不要混合两种语言。它们是完全分离的,在不同的时刻运行,并且具有孤立的作用域。

【讨论】:

    【解决方案2】:

    在您的 Select 查询中进行更改,然后按照您现在的方式进行操作。

    SELECT DATE_FORMAT(NOW(), '%d.%m.%Y %H:%i:%s') 
    

    结果

    DATE_FORMAT(NOW(), '%d.%m.%Y %H:%i:%s')
    27.10.2019 20:40:41
    

    而不是将函数 now() 放入您的列名

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 2016-08-06
      • 1970-01-01
      相关资源
      最近更新 更多