这是我的代码,但似乎遇到了一些错误。
首先,@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(太平洋标准时间)
。
最佳答案
在该页面上执行“查看源代码”并查看 JavaScript,您将看到以下内容:
console.log(new Date(2018-08-14));
这等同于:
console.log(new Date(1996));
当你给出 JavaScript 的 Date
constructor 时一个数字,它将该数字视为自 1970-01-01 以来的秒数:
value
Integer value representing the number of milliseconds since January 1, 1970, 00:00:00 UTC, with leap seconds ignored (Unix Epoch; but consider that most Unix timestamp functions count in seconds).
这就是“Wed Dec 31 1969 16:00:01 GMT-0800(太平洋标准时间)”的来源。
获得正确日期的最简单方法是使用 #to_json
而不是 #to_s
构建字符串,然后将其标记为“HTML 安全”以保持 Rails来自编码双引号:
console.log(new Date(<%= @user.birthday.to_json.html_safe %>));
这应该给你:
console.log(new Date("2018-08-14"));
在生成的 JavaScript 中。
关于javascript - Rails 将日期对象传递给 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51850428/