日期时间规范
说明
整个工程关于日期时间严格按照统一的规范定义。
01. 前后端交互格式
前后端传递日期格式统一为:
- 日期: YYYY-MM-DD
- 日期时间: YYYY-MM-DD HH:mm:ss
- 时间: HH:mm:ss
不要自己直接写死格式,采用统一的常量
引入常量:
import { DEFAULT_DATE_FORMAT } from 'utils/constants';
02. 前端日期时间显示
前端日期的显示要根据个人中心的设置统一处理
01. 应用
// 引入对应的 方法和常量
import { getDateFormat } from 'utils/utils';
import { DEFAULT_DATE_FORMAT } from 'utils/constants';
import { dateRender } from 'utils/renderer';
// 在表单中使用
// 提交方法
handleSubmit(e){
    // ...
    const formValues = form.getFieldsValue();
    formValues.startDate = formValues.startDate && formValues.startDate.format(DEFAULT_DATE_FORMAT);
    // ...
}
// FormItem
const dateFormat = getDateFormat();
form.getFieldDecorator('startDate', {
    initialValue: editRecord.startDate ? moment(editRecord.startDate, DEFAULT_DATE_FORMAT) : null,
})(
    <DatePicker
        format={dateFormat}
    />
)
// Table
const columns = [
    {
        dataIndex: 'startDate',
        name: intl.get('hmdm.model.bank.startDate').d('生效时间'),
        render: dateRender,
    },
];
02. 例子
import { getDateFormat } from 'utils/utils';
import { DEFAULT_DATE_FORMAT } from 'utils/constants';
import { dateRender } from 'utils/renderer';
@Form.create({fieldNameProp: null})
@connect(({loading}) => ({loading}))
export default class Bank extends React.Component {
    state = {
        editRecord: {startDate: '2018-09-20', id: 1}, // 当前编辑的记录
    };
    getColumns(){
        if(!this.columns){
            this.columns = [
                {
                    dataIndex: 'startDate',
                    name: intl.get('hmdm.model.bank.startDate').d('生效时间'),
                    render: dateRender,
                },
                // ...
            ];
        }
        return this.columns;
    }
    handleSearchBtnClick(e){
        e.preventDefault();
        const {form} = this.props;
        const formValues = form.getFieldsValue();
        const dateFormat = getDateFormat();
        formValues.startDate = formValues.startDate && moment.format(dateFormat);
        this.queryList(formValues);
    }
    queryList(params){
        // ...
    }
    render(){
        const { form } = this.props;
        const { editRecord = {startDate: '2018-09-20', id: 1} } = this.state;
        const dateFormat = getDateFormat();
        return (
            <React.Fragment>
                <Header title="银行定义" />
                <Content>
                    <div className="table-list-search">
                        <Form layout="inline">
                            <Form.Item label={intl.get('hmdm.model.bank.startDate').d('生效时间')}>
                                {
                                    form.getFieldDecorator('startDate')(
                                        <DatePicker format={dateFormat} />
                                    )
                                }
                            </Form.Item>
                            <Form.Item>
                                <Button htmlType="submit" type="primary" onClick={this.handleSearchBtnClick}>{intl.get('hzero.common.button.search').d('查询')}</Button>
                            </Form.Item>
                        </Form>
                    </div>
                    <Table 
                        // ...
                        columns={this.getColumns()}
                        dataSource={dataSource}
                        rowKey="id"
                    />
                    <EditModal
                        editRecord={editRecord}
                        // ...
                    />
                </Content>
            </React.Fragment>
        );
    }
}
@Form.create({fieldNameProp: null})
class EditModal extends React.Component{
    render(){
        const { editRecord = {}, form } = this.props;
        const dateFormat = getDateFormat();
        return (
            <Modal
                // ...
                visible
            >
                <Form>
                    <Form.Item label={intl.get('hmdm.model.bank.startDate').d('生效时间')}>
                        {
                            form.getFieldDecorator('startDate', {
                                initialValue: editRecord.startDate ? moment(editRecord.startDate, DEFAULT_DATE_FORMAT) : null,
                            })(
                                <DatePicker
                                    format={dateFormat}
                                />
                            )
                        }
                    </Form.Item>
                </Form>
            </Modal>
        );
    }
}