我是新来的反应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>
);
}
答案 0 :(得分:55)
由于您使用的是webpack,因此您应该只需import
或require
,然后再使用它:
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>
答案 4 :(得分:1)
因此,我必须在我的ReactJS项目中将此Epoch Timestamp日期格式格式化为合法日期格式。我做了以下事情:
import moment from 'moment'
-鉴于您已经通过NPM安装了js脚本,如果没有,请前往this link
例如:
如果我有一个像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>
);
}