使用React js(ES6)的时刻js

时间:2016-06-23 13:34:31

标签: reactjs momentjs

我是新来的反应js。我正在为我的新项目使用Reactjs(ES6)。如何使用moment.js格式化日期?

我想在下面提到的循环中格式化我的post.date

 render() {
    return (
        <div>
            { 
            this.props.data.map((post,key) => 
                <div key={key} className="post-detail">
                    <h1>{post.title}</h1>
                    <p>{post.date}</p>
                    <p dangerouslySetInnerHTML={{__html: post.content}}></p>
                    <hr />
                </div>
            )}
        </div>
    );
}

11 个答案:

答案 0 :(得分:55)

由于您使用的是webpack,因此您应该只需importrequire,然后再使用它:

import moment from 'moment'

...
render() {
    return (
        <div>
            { 
            this.props.data.map((post,key) => 
                <div key={key} className="post-detail">
                    <h1>{post.title}</h1>
                    <p>{moment(post.date).format()}</p>
                    <p dangerouslySetInnerHTML={{__html: post.content}}></p>
                    <hr />
                </div>
            )}
        </div>
    );
}
...

答案 1 :(得分:12)

我知道,问题有点陈旧,但是因为我在这里看起来人们仍在寻找解决方案。

我建议您使用react-moment link

react-moment带有方便的JSX标签,可减少大量工作。就像你的情况一样: -

import React  from 'react';
import Moment from 'react-moment';

exports default class MyComponent extends React.Component {
    render() {
        <Moment format="YYYY/MM/DD">{this.props.dateToFormat}</Moment>
    }
}

答案 2 :(得分:3)

如果其他答案失败,则将其导入为

import moment from 'moment/moment.js'

可能有效。

答案 3 :(得分:2)

运行npm i moment react-moment --save

您可以在组件中使用它,

import Moment from 'react-moment';

const date = new Date();
<Moment format='MMMM Do YYYY, h:mm:ss a'>{date}</Moment>

会给你这样的东西:
enter image description here

答案 4 :(得分:1)

因此,我必须在我的ReactJS项目中将此Epoch Timestamp日期格式格式化为合法日期格式。我做了以下事情:

  1. import moment from 'moment'-鉴于您已经通过NPM安装了js脚本,如果没有,请前往this link

  2. 例如:

    如果我有一个像1595314414299这样的纪元日期时间戳,那么我会尝试 在控制台中查看结果-

  var dateInEpochTS = 1595314414299
  var now = moment(dateInEpochTS).format('MMM DD YYYY h:mm A');
  var now2 = moment(dateInEpochTS).format('dddd, MMMM Do, YYYY h:mm:ss A');
  console.log("NOW");
  console.log(now);
  console.log("NOW2");
  console.log(now2);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

预期产量

"NOW"
"Jul 21 2020 12:23 PM"
"NOW2"
"Tuesday, July 21st, 2020 12:23:34 PM"

答案 5 :(得分:0)

在我的情况下,我想获取几个国家的timeZone,首先安装js

npm install moment --save  

然后安装moment-timezone.js

npm install moment-timezone --save

然后我将themn导入到我的组件中

import moment from 'moment';
import timezone from 'moment-timezone'

那是因为我想分别花费小时和分钟以及第二秒

<Clock minutes={moment().tz('Australia/Sydney').minute()} hour={moment().tz('Australia/Sydney').hours()} second={moment().tz('Australia/Sydney').second()}/>

答案 6 :(得分:0)

导入您的项目的时刻

 import moment from react-moment

然后像这样使用它

return(
<Moment format="YYYY/MM/DD">{post.date}</Moment>
);

答案 7 :(得分:0)

 import moment from 'moment';
 .....

  render() {
   return (
    <div>
        { 
        this.props.data.map((post,key) => 
            <div key={key} className="post-detail">
                <h1>{post.title}</h1>
                <p>{moment(post.date).calendar()}</p>
                <p dangerouslySetInnerHTML={{__html: post.content}}></p>
                <hr />
            </div>
        )}
    </div>
   );
  }

答案 8 :(得分:0)

我已经按照如下方式使用它,并且它运行正常。

import React  from 'react';
import * as moment from 'moment'

exports default class MyComponent extends React.Component {
    render() {
            <div>
              {moment(dateToBeFormate).format('DD/MM/YYYY')}
            </div>            
    }
}

答案 9 :(得分:0)

如果您使用的是API,则可以将其用作:

import moment from 'moment'
...

        this.state = {
            List: []
        };
    }


    componentDidMount() {
        this.getData();
    }
    // Show List
    getData() {
        fetch('url')
            .then((response) => {
                response.json()
                    .then((result) => {
                        this.setState({ List: result })
                    })
            })
    }
this.state.List = 
this.state.List.map(row => ({...row, dob: moment(row.dob).format("YYYY/MM/DD")}))

...

答案 10 :(得分:-1)

我在我的反应项目中使用了一刻

import moment from 'moment'

state = {
    startDate: moment()
};
render() {
    const selectedDate = this.state.startDate.format("Do MMMM YYYY");
    return(
     <Fragment>
       {selectedDate)
     </Fragment>
   );
}