如果字符串包含“T”,则删除.在此之后,使用时间字符串连接以在自动映射器文件中形成日期



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

.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)))

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

日期/时间转换器:

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()

最新更新