[英]How to show the time like this ex: 1sec ago , 1 min ago , 1 hour ago , 1 month ago
[英]How to show time ago in javascript (node js)
实际上我有一个日期时间或时间戳格式看起来像2015-12-18 07:10:54这次应该像 2 小时前那样转换或修改。
我试过这个。 但这有问题。
总是显示 8 天前。 {这是错误的估计。}
function ( date ) {
var seconds = Math.floor(( new Date() - date ) / 1000 );
var interval = Math.floor( seconds / 31536000 );
if ( interval == 1 ) {
return interval + " year ago";
}
if ( interval > 1 ) {
return interval + " years ago";
}
interval = Math.floor( seconds / 2592000 );
if ( interval == 1 ) {
return interval + " month ago";
}
if ( interval > 1 ) {
return interval + " months ago";
}
interval = Math.floor( seconds / 86400 );
if ( interval == 1 ) {
return interval + " day ago";
}
if ( interval > 1 ) {
return interval + " days ago";
}
interval = Math.floor( seconds / 3600 );
if ( interval == 1 ) {
return interval + " hour ago";
}
if ( interval > 1 ) {
return interval + " hours ago";
}
interval = Math.floor( seconds / 60 );
if ( interval == 1 ) {
return interval + " minute ago";
}
if ( interval > 1 ) {
return interval + " minutes ago";
}
return Math.floor(seconds) + " seconds ago";
}
我可以建议使用MomentJS这是一个强大的库来管理日期,安装它:
npm install --save moment
然后你只需从现在开始获得时间:
moment().fromNow();
要么
var yourDate = new Date();
moment(yourDate).fromNow();
或者根据你的例子:
moment("2015-12-18 07:10:54", "YYYY-MM-DD HH:mm:ss").fromNow();
如果你有一个像下面这样的ISO格式的日期,你不需要格式化它,只需使用它:
moment("2015-12-09T12:09:30.000Z").fromNow()
使用MomentJS这种操作变得简单如下:
moment().subtract(10, 'days').calendar(); // 12/08/2015
moment().subtract(6, 'days').calendar(); // Last Saturday at 10:10 AM
moment().subtract(3, 'days').calendar(); // Last Tuesday at 10:10 AM
moment().subtract(1, 'days').calendar(); // Yesterday at 10:10 AM
moment().calendar(); // Today at 10:10 AM
moment().add(1, 'days').calendar(); // Tomorrow at 10:10 AM
moment().add(3, 'days').calendar(); // Monday at 10:10 AM
moment().add(10, 'days'
这个时间应该像2小时前一样转换或修改,否则
var result = document.querySelector('#result'); var dateFromString = new Date('2015-12-18 07:10:54'); result.textContent = 'dateFromString: ' + dateFromString; // dateFromString: travel 2 hours back dateFromString.setHours(dateFromString.getHours()-2); result.textContent += '\\n2 hours before 2015-12-18 07:10:54: ' + dateFromString; // determine difference between 2015-12-18 07:10:54 and the (time traveled) dateFromString var difference = dateDiffCalc([new Date('2015-12-18 07:10:54'), dateFromString]) result.textContent += '\\nHours difference dateFromString and '+ '2015-12-18 07:10:54: ' + difference.hours; function dateDiffCalc(value) { var ms = Math.abs(value[0].getTime()-value[1].getTime()); var secsdf = Math.floor(((ms/1000)%(60*60))%60); var mindf = Math.floor((ms/(60*1000))%60); var hourdf = Math.floor(ms/(60*1000*60)%24); var daydf = Math.round((ms/(60*1000*60))/24); return { days: daydf, hours: hourdf, minutes: mindf, seconds: secsdf }; }
<pre id="result"></pre>
正如其他人所建议的那样,通过使用 Moment API,您可以非常轻松地实现这一目标。
// Get the Time Since Content was Posted with Moment.js
const getDate = (date) => {
const dateTime = new Date(date * 1000);
return moment(dateTime).fromNow();
};
date
是 UTC 时间戳
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.