繁体   English   中英

如何在javascript(节点js)中显示时间前

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM