Unix时间格式总是返回“ 50年前”

问题描述 投票:0回答:2

我正在使用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
2个回答
0
投票

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

const formatedDate = timeAgo.format(time * 1000)

-1
投票

组件说它是50年前,因为那是纪元时间0-默认值。您尚未设置日期。设置timeAgo.date = time,您将获得更准确的信息。我也不认为“格式”是组件中的一种方法。如果要设置格式,请使用formatter()方法。

© www.soinside.com 2019 - 2024. All rights reserved.