0

我有两个字符串。日期字符串和时间字符串,它们需要连接在一起以形成有效的日期时间。下面的代码有效,但看起来有点乱,有点像黑客,有没有更好的方法?

.ForMember(dest => dest.ValidFrom, src => src.MapFrom(m => 
                        DateTime.Parse(m.ValidFromDate.Contains("T") ? 
                            m.ValidFromDate.Remove(m.ValidFromDate.LastIndexOf("T", StringComparison.Ordinal) + 1) 
                            : 
                            m.ValidFromDate 
                        + " " + 
                        m.ValidFromTime)))
4

1 回答 1

0

这是我最终解决此问题的方法:

日期/时间转换器:

import moment from 'moment';

export class DateTimeFormat {
    format(date, time) {

        var dateFormatted;

        if (typeof(date) === 'string')
        {
            // Must have come from the DB 
            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');
    }
}

表单背后的代码:

            this.validator = this.validation.on(this)                    
            .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()
于 2016-03-29T09:04:55.473 回答