这是我的代码,但似乎遇到了一些错误。
首先,@user.birthday
是一个Date对象,我在Rails控制台中将其设置为Tue, 14 Aug 2018
。
<script type="text/javascript">
$(function() {
console.log(new Date(<%= (@user.birthday.to_s) %>));
});
</script>
但是,它会打印Wed Dec 31 1969 16:00:01 GMT-0800 (Pacific Standard Time)
。
答案 0 :(得分:1)
在该页面上执行“查看源代码”并查看JavaScript,您将看到以下内容:
console.log(new Date(2018-08-14));
这与说的一样:
console.log(new Date(1996));
为JavaScript的Date
constructor提供一个数字时,它会将这个数字视为自1970-01-01以来的秒数:
value
整数值,表示自1970年1月1日UTC时间00:00:00以来的毫秒数,忽略了leap秒(Unix时代;但是请考虑大多数Unix时间戳函数以秒为单位)。
这就是“太平洋标准时间1969年12月31日星期三16:00:01(太平洋标准时间)”的来源。
获取正确日期的最简单方法是使用#to_json
而不是#to_s
来构建字符串,然后将其标记为“ HTML安全”,以防止Rails对双引号进行编码:>
console.log(new Date(<%= @user.birthday.to_json.html_safe %>));
应该给你的东西
console.log(new Date("2018-08-14"));
在生成的JavaScript中。