将日期发送到服务器后,getDay()在客户端不起作用

时间:2017-05-22 12:12:06

标签: javascript socket.io

这在客户端完全正常,首先:

var timeOfMessageSent = new Date();
console.log(timeOfMessageSent); // Mon May 22 2017 14:03:13 GMT+0200 (Romance Summer Time)
var day = timeOfMessageSent.getDay(); // 1
console.log("this is the day: ",day);

但是,在将日期发送到服务器,然后将其发送回客户端后,它不起作用。

现在日期显示如下:2017-05-22T12:03:13.437Z 我猜这就是为什么getDate不起作用的原因。

如何确保日期首先显示?例如2017-05-22T12:03:13.437Z

3 个答案:

答案 0 :(得分:1)

服务器似乎将日期作为ISO字符串返回。您必须从此字符串创建一个新的Date实例。

通常不鼓励使用字符串来创建日期对象,但ISO日期字符串是标准的,也是最安全的日期字符串格式,用于初始化日期对象。

Javascript日期对象不属于JSON的一部分,因此需要将其转换为字符串或数字才能通过JSON API传输。这就是服务器返回日期的ISO字符串表示的原因 JSON API常用的ISO字符串的替代方法是将日期转换为表示日期毫秒的数字。可以使用日期构造函数将两个变量转换回Javascript日期对象:new Date(dateValue)

答案 1 :(得分:1)

将您的服务器日期字符串设为日期对象。

var timeOfMessageSent = new Date();
console.log(timeOfMessageSent); // Mon May 22 2017 14:03:13 GMT+0200 (Romance Summer Time)
var day = timeOfMessageSent.getDay(); // 1
console.log("this is the day: ",day);

var newDate = new Date("2017-05-25T12:19:55.982Z"); // give your server date and return as date object
var newDay = newDate.getDay();
console.log("this is the new day: ", newDay);

答案 2 :(得分:0)

您可以使用moment.js将您获得的ISO字符串修改为您的偏好。使用该库,您可以根据需要显示日期。