我需要在我的web应用程序中按创建日期对一堆项目进行分组。
每一项都有确切的时间戳,例如1417628530199
。我正在使用Moment.js和它的"time from now“特性将这些原始时间戳转换成易于阅读的日期,例如2 Days Ago
。然后,我想使用可读日期作为在同一日期创建的一组项目的标题。
问题是原始的时间戳太具体了--两个在同一日期创建但相隔一分钟的项目将各自有一个唯一的时间戳。所以我得到了2 Days Ago
的头,下面是第一项,然后是2 Days Ago
的另一个头,下面是第二项,依此类推。
将原始时间戳四舍五入到最接近的日期的最佳方法是什么,以便在同一日期创建的任何项都具有完全相同的时间戳,从而可以组合在一起?
发布于 2014-12-06 04:46:37
试试这个:
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 );
发布于 2014-12-06 04:10:59
通过使用Moment.js,您可以使用以下代码将所有内容舍入到一天的开头:
moment().startOf('day').toString();
// -> Prints out "Fri Dec 05 2014 00:00:00 GMT-0800"
您可以在docs中阅读有关startOf()
的更多信息。
发布于 2019-11-05 13:55:31
下面是一种简洁的方法,可以在一行中只获取日期,而不需要依赖关系:
let d = new Date().setHours(0, 0, 0, 0);
https://stackoverflow.com/questions/27323791
复制相似问题