繁体   English   中英

如何将 UNIX 时间戳转换为相对日期,如 whatsapp 最后一次看到状态与 moment.JS

[英]How to convert UNIX timestamp into relative date like whatsapp last seen status with moment.JS

我想将 UNIX 时间戳显示为最后一次看到的状态,就像 WhatsApp 在 javascript 中所做的一样。我正在使用moment.js ,据我所知,我们可以格式化日期或可以使用.fromNow()给出相对日期但不是我要找的。

例如,设 Unix 时间戳:1606908420

如果我使用moment.unix(1606908420).formNow()结果将是few seconds ago或类似的东西

但我要找的是,它应该显示Today 11:30 am

同样地

For a date of yesterday, it should show: Yesterday 11:30 am
For a date of day before yesterday, it should show: Mon 11:30 am

Any date of last week or earlier, it should show 25-11-2020 

任何人都可以帮助我如何实现这一目标?

将 UNIX 时间戳转换为日期

  1. 使用toDate()方法

    {new Date(timestamp?.toDate()).toUTCString()}

    Wed, 2 Dec 2020 12:00:00 GMT

  2. 使用力矩

    {moment.unix(order.data.created).format("MMMM Do YYYY, h:mma")}

我强烈推荐给你第二个时刻 moment 文档中了解更多

将时刻日期转换为看起来像在 Whatsapp 中

//utility function to convert your date to looks like in whatsapp

const dateFormatter = (date) => {

    //here we were subtracting our date from current time which will be in milliseconds
    const dateDifferenceInTime =
        new Date().getTime() - new Date(date.toDate()).getTime();

    // conerting milli seconds to days
    // (1000 milliseconds * (60 seconds * 60 minutes) * 24 hours)
    const dateDifferenceInDays =
        dateDifferenceInTime / (1000 * 60 * 60 * 24);

    //After returning in particular formats as of our convinent
    if (dateDifferenceInDays < 1) {
        return moment(date.toDate()).format("LT");// 10:04 am
    } else if (dateDifferenceInDays < 2) {
        return "Yesterday"; // just YesterDay
    } else if (dateDifferenceInDays <= 7) {
        return moment(date.toDate()).format("dddd");//like monday , tuesday , wednesday ....
    } else {
        return moment(date.toDate()).format("l");// if it was more than a week before it will returns as like 05/23/2022
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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