首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将时间戳舍入到最接近的日期

将时间戳舍入到最接近的日期
EN

Stack Overflow用户
提问于 2014-12-06 04:02:53
回答 6查看 23.9K关注 0票数 15

我需要在我的web应用程序中按创建日期对一堆项目进行分组。

每一项都有确切的时间戳,例如1417628530199。我正在使用Moment.js和它的"time from now“特性将这些原始时间戳转换成易于阅读的日期,例如2 Days Ago。然后,我想使用可读日期作为在同一日期创建的一组项目的标题。

问题是原始的时间戳太具体了--两个在同一日期创建但相隔一分钟的项目将各自有一个唯一的时间戳。所以我得到了2 Days Ago的头,下面是第一项,然后是2 Days Ago的另一个头,下面是第二项,依此类推。

将原始时间戳四舍五入到最接近的日期的最佳方法是什么,以便在同一日期创建的任何项都具有完全相同的时间戳,从而可以组合在一起?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-12-06 04:46:37

试试这个:

代码语言:javascript
复制
Date.prototype.formatDate = function() {
   var yyyy = this.getFullYear().toString();
   var mm = (this.getMonth()+1).toString();
   var dd  = this.getDate().toString();
   return yyyy + (mm[1]?mm:"0"+mm[0]) + (dd[1]?dd:"0"+dd[0]);
  };

var utcSeconds = 1417903843000,
    d = new Date(0);

d.setUTCSeconds(Math.round( utcSeconds / 1000.0));

var myTime = (function(){
        var theTime = moment(d.formatDate(), 'YYYYMMDD').startOf('day').fromNow();
        if(theTime.match('hours ago')){
            return 'Today';
        }
        return theTime;
    })();

alert( myTime );

http://jsfiddle.net/cdn5rvck/4/

票数 2
EN

Stack Overflow用户

发布于 2014-12-06 04:10:59

通过使用Moment.js,您可以使用以下代码将所有内容舍入到一天的开头:

代码语言:javascript
复制
moment().startOf('day').toString();
// -> Prints out "Fri Dec 05 2014 00:00:00 GMT-0800"

您可以在docs中阅读有关startOf()的更多信息。

票数 13
EN

Stack Overflow用户

发布于 2019-11-05 13:55:31

下面是一种简洁的方法,可以在一行中只获取日期,而不需要依赖关系:

代码语言:javascript
复制
let d = new Date().setHours(0, 0, 0, 0);
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27323791

复制
相关文章

相似问题

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