如何将utc日期时间转换为模糊时间戳

how to convert utc datetime to Fuzzy Time stamps

本文关键字:转换 模糊 时间戳 时间 日期 utc      更新时间:2023-09-26

我有一个post-action方法,它可以正确地将数据和日期以utc-date格式保存到数据库中。现在,我有一个get方法,它以正确的格式从数据库中获取所有数据,如下所示:

  public JsonResult GetPosts()
    {
        var ret = (from post in db.Posts.ToList()
                   orderby post.PostedDate descending
                   select new
                   {
                       Message = post.Message,
                       PostedBy = post.PostedBy,
                       PostedByName = post.ApplicationUser.UserName,
                       PostedByAvatar = _GenerateAvatarUrlForUser(post.PostedBy),
                       PostedDate = post.PostedDate,
                       PostId = post.PostId,
                 });
        return Json(ret, JsonRequestBehavior.AllowGet);
    }

现在,我已经从nuget包中添加了getTimeAgo插件,并添加到脚本文件夹中。在我的Scripts文件夹中,我有一个wallpost.js文件,其中包含用于更新模型的客户端模型和用于自动更新UI的客户端视图模型。在这里,我有一个getTimeAgo函数来从utc-datetime获取模糊时间戳。它是这样的:

   function getTimeAgo(varDate) {
if (varDate) {
    return $.timeago(varDate.toString().slice(-1) == 'Z' ? varDate : varDate + 'Z');
}
else {
    return '';
}

}但在视图页面上,它只是显示NaNyearsAgo。正如我之前所说,日期以正确的格式保存在数据库中,但我无法将utc日期时间转换为模糊时间戳。为了简洁起见,我在这里上传了我的整个wallpost.js文件。http://pastebin.com/VVUuMScL在我的查看页面上,我展示了一篇带有用户图片的帖子,如下所示:

        <ul id="msgHolder" data-bind="foreach: posts">
<li class="postHolder">
    <img data-bind="attr: { src: PostedByAvatar }" width="150" height="200">
    <p><a data-bind="text: PostedByName"></a>: <span data-bind=" html: Message"></span></p>
    <div class="postFooter">
        <span class="timeago" data-bind="text: PostedDate"></span>&nbsp;<a class="linkComment" href="#" data-bind=" click: toggleComment">Comment</a>
    </div>
</li>

请告诉我出了什么问题。

问题在于日期格式及其解析。您可以使用moment.js库进行

  • 解析UTC日期:moment.UTC(字符串)
  • 甚至可以使用类似于模糊矩().fromNow()的格式

所以你可以放下模糊库,开始使用moment.js.

请参阅与moment.js时区处理相关的答案,这也会影响您:如何在服务器中处理过帐日期