Javascript在字符串中连接时更改日期格式

时间:2018-04-02 22:13:16

标签: javascript date

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值?谢谢!

2 个答案:

答案 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