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