moment.js无法将两个字符串转换为一个字符串

时间:2016-03-24 14:26:01

标签: datetime datepicker momentjs

import moment from 'moment';

export class DateTimeFormat {
    format(date, time) {
        alert(date);

        return moment(date + 'T' + time, 'DD/MM/YYYY HH:mm:ss');
    }
}

'Date'可以作为字符串'DD / MM / YYYY'(来自加载时的DB),或来自calander(this.value = $('.input-group.date', this.element).datepicker('getUTCDate');)datepicker的日期对象在自定义元素中使用。< / p>

DateTimeFormat的使用方式如下:

            .ensure('baseContent.ValidFromDate', (config) => { config.computedFrom(['baseContent.ValidFromDate', 'baseContent.ValidFromTime', 'baseContent.ValidToDate', 'baseContent.ValidToTime']) })
                .if(() => {
                    return this.baseContent.ValidFromDate !== null && this.baseContent.ValidFromTime !== null && this.baseContent.ValidToDate !== null && this.baseContent.ValidToTime !== null })
                    .passes( () => { return this.datetimeformat.format(this.baseContent.ValidFromDate, this.baseContent.ValidFromTime) < this.datetimeformat.format(this.baseContent.ValidToDate, this.baseContent.ValidToTime) })
                    .withMessage('< Valid To')
                .endIf()

我试过了: 时刻。(日期) - 无效日期失败 moment.utc(date) - 无效日期失败

我不知道是否需要添加try catch?即尝试从日期对象转换,如果它在catch中,那么它必须是来自db等的字符串?

使用@VicenzoC中的以下信息,我添加了一个if语句

var dateFormatted;

if (typeof(date) === 'string')
{
    dateFormatted = date;
}
else
{
    // Must be an object from a calendar etc
    alert(date);
    dateFormatted = moment(date, 'DD/MM/YYYY');
    alert(dateFormatted);
}

return moment(date + 'T' + time, 'DD/MM/YYYY HH:mm:ss');

第一次提醒 -

enter image description here

第二次提醒 -

enter image description here

2 个答案:

答案 0 :(得分:1)

在我看来,您的.datepicker('getUTCDate')会返回Date个对象,在这种情况下,您可以使用moment(Date);

将其解析为moment个对象
this.value = $('.input-group.date', this.element).datepicker('getUTCDate');
var momentObj = moment(this.value);

如果你有一个字符串,你可以使用:

解析它

如果您有moment对象,则可以使用format方法,如果您需要以自定义格式显示日期。

答案 1 :(得分:0)

import moment from 'moment';

export class DateTimeFormat {
    format(date, time) {

        var dateFormatted;

        if (typeof(date) === 'string')
        {
            dateFormatted = date;
        }
        else
        {
            // Must be an object from a calendar etc
            dateFormatted = moment(date).format('DD/MM/YYYY');
        }

        return moment(dateFormatted + 'T' + time, 'DD/MM/YYYY HH:mm:ss');
    }
}

这是最终的代码,我首先确定typeof(再次感谢@VenenzoC指向我那个方向)然后我在if语句中处理日期部分。