2017-06-15 97 views
0

我想今年字符串转换成日期型像下面的例子:年转换成字符串日期

var date = new Date('1999'); 
console.log(date); // result -> Thu Dec 31 1998 16:00:00 GMT-0800 (Pacific Standard Time) 

问题是与时区。由于字符串格式不正确,因此被视为UTC时区。

如何正确地转换年份字符串和可以当作当地时间

我知道它会工作,如果我像这样'01/01/' + '1999'追加日日,但是有可能还有其他解决方案吗?

+0

https://stackoverflow.com/questions/2613511/javascript-dateformat-for-different-timezones – Chris

+0

'新的日期(1999,0)'应该做的。将它作为年+月参数传递,而不是要解析的字符串。 – Bergi

回答

1

您可以使用空值初始化日期以避免使用默认属性的问题。

var date = new Date(""); 
date.setYear(1999); 
0

您应该先用当前时区创建一个新的Date对象,然后获取您的时区偏移量,然后从中减去它。

getTimezoneOffset()方法返回从当前语言环境(主机系统设置)到UTC的 分钟的时区差异。

下面应该工作:

var x = new Date().getTime() - new Date().getTimezoneOffset(); 
var y = new Date(x); 
console.log(y); 

您也可以在网上试穿jsfiddle

0

您应该始终使用UTC明确声明任何日期变量,然后在需要时将其转换。首先用UTC声明日期,然后将其转换为字符串。所以,我认为你需要:

var date = new Date('1999-01-01 08:00:00 UTC'); 
console.log(date.toString());