关于 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 项目的模板引擎 :)


来源:https://www.codenong.com/28544419/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9734.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?