一个非常简单的问题。我有三个数字,一年,一个月和一天。
var year = parseInt($("#date_year").val());
var month = parseInt($("#date_month").val()) - 1; // to start from 0
var day = parseInt($("#date_day").val());
我想在JS中使用这些值初始化一个正确的Date对象。我试过这个:
var date = new Date(year, month, day);
然而,它表现得很奇怪,一天不正确,时间也不是00:00:00,例如对于价值观:
year: 1987
month: 9
day: 28
打印后{p> date.toUTCString()
我得到了:
Tue, 27 Oct 1987 23:00:00 GMT
我期待的时候:
Wed, 28 Oct 1987 00:00:00 GMT
任何人都可以指出,我不能正确理解吗?
答案 0 :(得分:1)
使用此:
date.toString();
toUTCString()
方法使用UTC时区将日期转换为字符串。
toString()
方法返回表示指定Date对象的字符串(不转换日期)。
答案 1 :(得分:1)
这是由于时区的不同。
toUTCString():根据通用时间将Date对象转换为字符串。
答案 2 :(得分:1)
使用date.toString()
代替date.toUTCString()
。
date.toString()
返回"Wed Oct 28 1987 00:00:00 GMT+0800 (Malay Peninsula Standard Time)"
如果您需要它返回"Wed, 28 Oct 1987 00:00:00 GMT"
,可以试试这个:
var date = new Date(year, month, day);
dateString = date.toString();
dateString = dateString.split("+")[0];
dateString = dateString.replace(" ", ", "); // replace first space with comma + space
这会使dateString = "Wed, Oct 28 1987 00:00:00 GMT"
答案 3 :(得分:1)
Date对象的参数获取运行时间区域,然后将其转换并存储为1970年1月1日UTC之后的毫秒数。
所以这个:
var date = new Date(1987, 9, 28);
这样做是因为网站遍布全球,并且可以让浏览器根据其所在的本地时区更轻松地显示时间,并将对象存储在公共参考框架中,在这种情况下是UTC。
您可以使用:
date.toString()
这将以运行时间区域中日期的美式英语表示形式显示Date对象。或者:
date.toLocaleString()
您可以指明区域设置,甚至是您想要显示的区域。Check compatibility