首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布后的展示时间

问发布后的展示时间
EN

Stack Overflow用户
提问于 2018-02-19 14:43:31
回答 1查看 70关注 0票数 0

我正在为我的家庭实验室做一个状态页面项目。我希望能够完成一段时间,因为状态更新有时间,然后用户的系统占用当前服务器的时间,并计算出,我发出了多长时间。

到目前为止,我只有创建一个新状态的路径,然后是一个显示路径。

新状态路由

代码语言:javascript
复制
router.post("/status/new", middleware.isLoggedIn, (req, res) => {
    var type = req.body.type;
    var message = req.body.message;
    var date = new Date();
    var author = {
        id: req.user._id,
        username: req.user.username
    };
    var newStatus = {type:type, message:message, author:author, date:date};
    Status.create(newStatus, function(err, newlyCreated){
        if(err){
            throw(err);
        } else {
            //redirect back to new status page
            res.redirect("/admin/status/new");
        }
    });

});

显示状态路由

代码语言:javascript
复制
//root route
router.get("/", function(req, res){
    Status.find({}, function(err, allStatuses){
   if(err){
       console.log(err);
   } else {

       var second = 1000,
       minute = 1000 * 60,
       hour = minute * 60,
       day = hour * 24,
       year = day * 365,
       time = Date.now();

       var diff = time - allStatuses[0].date,
       seconds = Math.round(diff / second),
       minutes = Math.round(diff / minute),
       hours = Math.round(diff / hour),
       days = Math.round(diff / day),
       years = Math.round(diff / year);

       console.log("Difference: " + diff);
       if (diff < 1 * minute) {
           console.log(seconds + " seconds ago");
       }
       if (diff > 1 * minute && diff < 1 * hour) {
           console.log(minutes + " minutes ago");
       }
       if (diff > 1 * hour && diff < 1 * day) {
           console.log(hours + " hours ago");
       }
       if (diff > 1 * day && diff < 1 * year) {
           console.log(days + " days ago");
       }
       if (diff > 1 * year) {
           console.log(years + " years ago");
       }


      res.render("index", {statuses:allStatuses});
   }
 });
});

代码i用于第一行EJS数组

代码语言:javascript
复制
<% statuses.forEach(function(status){ %>

我以前用过moment.js,但从来没有做过这样的事情。我甚至不知道如何着手解决这个问题。欢迎任何指导或建议。我似乎找不到比这更好的工作。我认为我需要取当前的时间,减去创建的时间,然后计算提醒并计算出秒、分钟、小时、天、周、月和年。

我似乎知道如何做Date.now(),然后将其保存到数据库中,然后在页面上加载一个Date.now(),然后计算出毫秒差,但我不确定如何获取所找到的差异,然后将其传递给模板。我知道如何传递数组,但我似乎想不出一种方法从查询中获取数组,然后从每个数组中获取和查找时间差,将其保存在数组中,然后能够在模板中循环遍历它,在模板中循环查询返回的数组。

我所做的所有尝试都涉及循环遍历每个状态/post的整个差异数组。

EN

回答 1

Stack Overflow用户

发布于 2018-02-19 15:03:14

你可以自己动手,也可以用moment.js。

在第一种情况下,使用:

代码语言:javascript
复制
var diff = time.getTime() - allStatuses[0].date.getTime();

这样,您的时间差,以毫秒为单位。然后你可以按你的意愿格式化。

但是随着时间的推移,使用fromNow()方法变得更容易了:

代码语言:javascript
复制
var diff = moment(allStatuses[0].date).fromNow();

在这种情况下,diff已经是您需要打印给用户的字符串。

当然,您可能希望在一个循环中完成这个任务,而不仅仅是allStatus。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48868544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档