繁体   English   中英

从 MySQL 格式化 javascript 中的日期时遇到问题

[英]Having trouble formatting a date in javascript from MySQL

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

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

  $(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+”的 output,我怀疑这是因为没有给日期 ZC1C425268E68385D1AB5ZZF74C 赋值

我希望 output 采用 dd-mm HH-MM 格式,而不是“2019-10-29 10:00:00”的 MySQL 日期时间格式

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

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

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

“”

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

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

第一种方式

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

第二种方式:

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

在您的 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

而不是 function now() 放入您的列名

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM