【发布时间】:2017-10-24 19:12:47
【问题描述】:
我需要将moment() 对象更改为其他格式。例如,我收到这种格式的日期,'yyyy-mm-dd',我需要将其更改为'yyyy mm dd'。我目前正在使用这个解决方案,我想知道有没有更优雅的方式来做到这一点?
let dateValue = moment(moment(value, 'YYYY-MM-DD').format('YYYY MM DD'), 'YYYY MM DD');
编辑:
所以看来问题不在于瞬间对象不同。这是我的完整代码:
class EditRelation extends Component {
constructor(props) {
super(props);
const { validFrom, validTo } = props.relationMember;
this.state = {
validFrom: moment(validFrom, 'YYYY MM DD'),
validTo: moment(validTo, 'YYYY MM DD'),
}
this.handleChange = this.handleChange.bind(this);
}
handleChange(e) {
const { id, type, value } = e.target;
e.preventDefault();
if (type == 'date') {
const dateValue = moment(value, 'YYYY-MM-DD');
if (id == 'validTo' && dateValue < moment()) {
return;
}
this.setState({ [id]: dateValue });
} else {
this.setState({ [id]: value });
}
};
render() {
const { validFrom, validTo } = this.state;
return (
<form onSubmit={this.handleSubmit} ref={(form) => { this.form = form; }}>
<Label for="validFrom"><FormattedMessage id="RELATION_EDIT_MODAL.ACTIVE_FROM" /></Label>
<Input
type="date"
name="validFrom"
id="validFrom"
value={validFrom.format('YYYY-MM-DD')}
onChange={this.handleChange}
/>
<Label for="validTo"><FormattedMessage id="RELATION_EDIT_MODAL.ACTIVE_TIL" /></Label>
<Input
type="date"
name="validTo"
id="validTo"
value={validTo.format('YYYY-MM-DD')}
onChange={this.handleChange}
/>
</form>
);
}
}
当更改日期输入值时,我得到The specified value "Invalid date" does not conform to the required format, "yyyy-MM-dd". 虽然这是因为时刻对象格式不同,但似乎并非如此。
【问题讨论】:
-
看起来您正在使用 moment 将一个字符串转换为另一个字符串。你真的需要 moment 对象还是只需要字符串?
-
我需要的是对象而不是字符串。
-
“需要将 moment() 对象更改为其他格式”是什么意思?时刻代表一个日期。如果日期格式不同,它可以创建一个字符串表示,但对象本身总是相同的。
-
@GuyYogev 你说得对,问题不存在,我用完整的代码编辑了我的问题。
标签: javascript date momentjs