使用以下内容:
var timestart = $('.thisDiv').data("timestart");
var startDateTime = new Date(timestart);
从ajax更新的php文件中收集日期:
$TimeStart = date( 'Y,m,d,g,i', $TimeStart );
<div class="thisDiv" data-timestart="<?= $TimeStart ?>"></div>
var timestart = $('.thisDiv').data("timestart");
在控制台中,我在记录timestart
和startDateTime
时收到以下信息:
2017,07,24,7,50
Invalid Date
如果我粘贴输出的日期如下
var startDateTime = new Date(2017,07,24,7,50);
然后它工作正常。我知道为什么会收到无效日期?
答案 0 :(得分:2)
您的timestart
变量(JavaScript)只是一个字符串。所以它是一个字符串2017,07,24,7,50
,而不是那些按顺序排列的元素 - 它们不能用作new Date()
期望的单独参数。
我们来看看吧!
var startDateTime = new Date(2017,07,24,7,50); // Parameters in order - all OK!
var startDateTime = new Date("2017,07,24,7,50"); // A single string - single parameter, not OK!
您需要从PHP返回适当格式的日期,格式在JavaScript中有效。根据ECMAScript标准,应在所有浏览器中使用的有效格式为YYYY-MM-DDTHH:mm:ss.sssZ
(请参阅底部的参考)。要从PHP定义它,您需要将其格式化为
$TimeStart = date('c', $TimeStart);
这将返回2017-07-24T21:08:32+02:00
等格式。
,您可以使用splat / spread-operator ...
并将字符串拆分为元素,我认为这是比上面更好的方法。
var timestart = $('.thisDiv').data("timestart"); // Get the string: "2017,07,24,7,50"
timestart = timestart.split(","); // Split into array
var startDateTime = new Date(...timestart); // Pass as arguments with splat-operator
答案 1 :(得分:0)
您需要将日期从字符串格式转换为数字。
var timestart = $('.thisDiv').data("timestart").split(",").map(Number);
var startDateTime = new Date(...timestart);
console.log(startDateTime)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="thisDiv" data-timestart="2017,07,24,7,50"></div>