работает нормально сейчас. Спасибо

дряю избыточную форму с полем выбора даты. Дата отлично установлена ​​в поле, но когда я пытаюсь отправить ее в бэкэнд-API, формат даты:

BeginDate_1: Tue Nov 14 2017 15:03:43 GMT+0530 (IST)

Я пытаюсь изменить этот формат на формат «ГГГГ-мм-дд» перед отправкой его в серверный API.

Я пыталсяmomentjs для форматирования, но я не смог получить желаемый результат.

Вот что я попробовал:

Home.js

import React, {Component} from 'react';
import {Field, reduxForm} from 'redux-form';
import DatePicker from 'material-ui/DatePicker';
import {connect} from 'react-redux';
import * as moment  from 'moment';

class Home extends Component {

renderCalendarField= ({
                          input,
                          label,
                          meta: {touched, error},
                          children,
                          ...custom
                      }) => (
    <DatePicker
        floatingLabelText={label}
        errorText={touched && error}
        {...input}
        value = {input.value !== ''? new Date(input.value) : null}
        onChange={(event, value) => input.onChange(value)}
        children={children}
        {...custom}
        formatDate={(date) => moment(date).format('YYYY-MM-DD')}

    />

)

render() {

    const startDate = new Date();

    const {handleSubmit} = this.props;

    return (

        <form onSubmit={handleSubmit(this.onSubmit.bind(this))}>


            <div>
                <Field name="BeginDate_1" component={this.renderCalendarField} label="DEPARTURE" minDate={startDate} />
            </div>


            <div>
                <button type="submit">
                    Submit
                </button>
            </div>

        </form>

    );

}

}

const LogInForm = reduxForm({
form: 'MaterialUiForm', // a unique identifier for this form
validate
})(Home);

export default connect(mapStateTOProps, {getCity})(LogInForm);

Вывод консоли все еще:

BeginDate_1:Tue Nov 14 2017 15:03:43 GMT+0530 (IST)

Как я могу отформатировать эту дату вYYYY-mm-dd формат?

Ответы на вопрос(1)

Решение Вопроса

formatDate опора наDatePicker используется дляformat Display Date а не фактическая стоимость. Что вам нужно сделать, это отформатировать значение вonSubmit использовать функциюmoment


   const beginDate = moment(values.BeginDate_1).format('YYYY-MM-DD')
   console.log(beginDate);
   //other things
}

СогласноMaterial-UI / DatePicker документы:

FormatDate: функция

Эта функция вызывается для форматирования даты, отображаемой в поле ввода, и должна возвращать строку. По умолчанию, если не указан языковой стандарт и DateTimeFormat, объекты даты форматируются вISO 8601 YYYY-MM-DD.

Подпись:

function(date: object) => any
date: Date object to be formatted.
returns (any): The formatted date.
 Dhaval14 нояб. 2017 г., 12:05
получаю эту ошибку: TypeError: __WEBPACK_IMPORTED_MODULE_12_moment __ (...). формат не является функцией
 Dhaval14 нояб. 2017 г., 12:07
работает нормально сейчас. Спасибо
 Shubham Khatri14 нояб. 2017 г., 12:06
Это была опечатка в моем ответе. Так должно бытьformat и нетformate

Ваш ответ на вопрос