如何将valueOf日期转换回日期

时间:2018-03-06 22:56:33

标签: javascript date

在我的程序中,我传递clientId new Date.valueOf()作为临时ID,服务器可能会或可能不会传回ID,如果它传回了ID,那么它就赢了是一个有效的日期。

我想检查传回的id是否为有效日期,如何将valueOf转换回日期以查看它是否为有效日期?



var basicDate = document.getElementById("todaysDate");
var valueDate = document.getElementById("todaysDateValueOf");
var converted = document.getElementById("todaysDateValueOfConvertedBack");

basicDate.innerHTML = Date();//Tue Mar 06 2018 15:48:42 GMT-0700 (Mountain Standard Time)
valueDate.innerHTML = new Date().valueOf();//1520376522243
converted.innerHTML = new Date(valueDate.innerHTML);//invalid date

<div id="todaysDate"></div>
<div id="todaysDateValueOf"></div>
<div id="todaysDateValueOfConvertedBack"></div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

问题源于您将结果放入DOM元素,其中数据转换为字符串。当您将数据拉出并尝试将其传递给Date()构造函数时,它需要一个数字,但您要为其提供转换后的字符串。将字符串转换为数字然后就可以了。

更好的方法是将日期直接存储在变量中,然后从变量中的值填充DOM元素。这使您可以在需要执行Date工作时直接使用变量(这些变量不会将其数据转换为字符串)。

<强>供参考:

  • 在第一行代码中使用Date()而不是new Date()即可 一个问题。将Date作为函数而不是作为函数调用时 构造函数,它返回表示当前时间的String (世界标准时间)。但是,当Date作为新表达式的一部分被调用时,它 是一个构造函数:它初始化新创建的对象。
  • 如果您不使用字符串,请不要使用.innerHTML 不包含HTML。 .textContent是用于获取原始文本的内容 一个元素。事实上,没有必要让元素妨碍 这个。

当你把它们拉直时,它起作用:

&#13;
&#13;
var basicDate = document.getElementById("todaysDate");
var valueDate = document.getElementById("todaysDateValueOf");
var converted = document.getElementById("todaysDateValueOfConvertedBack");

// Get dates but assign directly to variables to avoid implicit conversions:
var currentDate = new Date();
var valueOfDate = currentDate.valueOf();
var reconstructedDate = new Date(valueOfDate);

basicDate.textContent = currentDate
valueDate.textContent = valueOfDate;
converted.textContent = new Date(valueOfDate);

console.log(currentDate);
console.log(valueOfDate);
console.log(reconstructedDate);
&#13;
<div id="todaysDate"></div>
<div id="todaysDateValueOf"></div>
<div id="todaysDateValueOfConvertedBack"></div>
&#13;
&#13;
&#13;

相关问题