【问题标题】:Unix time formatting always returns "50 years ago" [duplicate]Unix时间格式总是返回“50年前”[重复]
【发布时间】:2019-10-02 16:34:00
【问题描述】:

我正在使用Hacker news API。我想将 Unix 时间格式化为“35 分钟前,1 小时前”等。我正在使用javascript-time-ago 库。该值始终为50 years ago

这是一个 API 响应:

{
  "by" : "dhouston",
  "descendants" : 71,
  "id" : 8863,
  "kids" : [ 8952, 9224, 8917, 8884, 8887, 8943, 8869, 8958, 9005, 9671, 8940, 9067, 8908, 9055, 8865, 8881, 8872, 8873, 8955, 10403, 8903, 8928, 9125, 8998, 8901, 8902, 8907, 8894, 8878, 8870, 8980, 8934, 8876 ],
  "score" : 111,
  "time" : 1175714200,
  "title" : "My YC app: Dropbox - Throw away your USB drive",
  "type" : "story",
  "url" : "http://www.getdropbox.com/u/2/screencast.html"
}

这是我的组件:

// @Flow

import React from 'react';
import TimeAgo from 'javascript-time-ago'
import en from 'javascript-time-ago/locale/en'
....other imports ....


type PropsT = {
    id: number,
    by: string,
    kids: Array<number>,
    score: number,
    url: string,
    title: string,
    time: number | Date
}
const ListItem = (props: PropsT) => {
    const {by, kids = [], score, url, title, id, time} = props;

    const site = getSiteHostname(url) || 'news.ycombinator.com';
    const link = getArticleLink({url, id});
    const commentUrl = `${ITEM}${id}`;
    const userUrl = `${USER}${by}`;

    TimeAgo.addLocale(en)
    const timeAgo = new TimeAgo('en-US');

    const formatedDate = timeAgo.format(time)


    return ( 
        <Item>
            <TitleLink href={link} target="_blank">
                {title}<Host>({site})</Host>
            </TitleLink>
            <Description>
                {score} points by 
                <Link href={userUrl} target="_blank">
                    {by}
                </Link>
                {formatedDate} ago
                { ' | '}
                <Link href={commentUrl} target="_blank">
                    {kids.length} comments
                </Link>
            </Description>
        </Item>
     );
}


export default ListItem;

结果总是50年前如何正确格式化?

【问题讨论】:

标签: javascript reactjs unix-timestamp


【解决方案1】:

我实际上需要将time 乘以 1000。这解决了问题:

const formatedDate = timeAgo.format(time * 1000)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 2015-10-13
    • 2012-08-12
    • 2019-05-01
    • 2011-02-17
    相关资源
    最近更新 更多