const date = new Date();
date.setDate(date.getDate() - 30);
console.log(date); // 2018-03-03T23:10:24.063Z
console.log(date + 'hello'); // Sat Mar 03 2018 15:10:59 GMT-0800 (PST)hello
这里发生了什么?如何在不将其格式化为人类可读的情况下使用date
值?谢谢!
答案 0 :(得分:3)
2018-03-03T23:10:24.063Z
这是date.toISOString()
,所以date.toISOString() + 'hello'
。
答案 1 :(得分:2)
toJSON()
是你的朋友(通常不是):
const date = new Date();
date.setDate(date.getDate() - 30);
console.log(date);
console.log(date.toString());
console.log(`${date.toJSON()}hello`);
在内部,Date.prototype.toJSON()
使用Date.prototype.toISOString()
。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON
将date
对象与string
连接在一起时,正在调用内部Date.prototype.toString()
- 这会创建您不希望输出的输出。
Date
对象会覆盖toString()
对象的Object
方法;它不会继承Object.prototype.toString()
。对于Date
个对象,toString()
方法返回对象的string
表示。
toString()
方法始终在美式英语中返回日期的string
表示。当
toString()
表示为文本值或在字符串连接中引用日期时,JavaScript会自动调用date
方法。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toString