关于 jquery:使用 moment.js 显示不准确的日期

Displaying inaccurate date using moment.js

使用nodejs、jade和moment.js

1
 #{entry.published_at}

每次用户创建条目并更新发布日期。它是动态的。

示例:原始日期显示"Thu Jan 01 2015 08:00:00 GMT 0800 (SGT)"
在网页上,使用 momentjs 转换原始日期,因此仅显示 Jan 01 2015。

脚本

1
2
3
4
   $('.post-date').each(function(i, e) {
      var date = $(this).text();
      $(this).html(moment(date).format("DD MMMM YYYY"));
    });

但这显示的日期不正确,例如:2015 年 1 月 2 日。

不知道为什么它显示的日期不正确。

感谢您的帮助。

相关讨论

  • 你是说 entry.published_at 是一个 Date 对象吗?如果是这样,您在创建 moment 时会将其解析为字符串。您应该只是格式化它开始而不是重新解释它。
  • @MattJohnson 是的,它是带有时刻 js 的后端的 Date 对象。哦,所以你的意思是 published_at 应该在后端格式化?
  • 我的意思是你首先将它作为 div 标签中的字符串呈现(可能是隐式的)。然后您的 jquery 函数正在解析该字符串并立即重新格式化它。如果您删除该功能会发生什么 - 它是否显示为您显示"示例原始日期......"?那是一个字符串。
  • 当然 - 你可以在后端运行时刻,因为它是节点。那可能是最简单的。但是,如果您在前端运行它,则需要注意正在解析的字符串。例如,您可以在后端调用 .toISOString() 的日期,然后在前端更容易解析它。
  • @MattJohnson - 非常感谢。让它在前端而不是后端工作。

@MattJohnson - 建议格式化日期而不是解析。


也许是因为时区。

看看这个链接:http://momentjs.com/timezone/

相关讨论

  • 啊这意味着我也需要转换时区?
  • 我建议您将 moment.js 集成到您的服务器代码中,以便在客户端执行之前根据需要渲染 #{entry.published_at} ...或者您可以传递带有数据的 JSON,然后渲染到模板。我个人使用 nunjucks 作为我的 node.js 项目的模板引擎 🙂

以上是关于 jquery:使用 moment.js 显示不准确的日期的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>