假设我有2个具有相同属性集的类:
public class MyDto
{
public int Id { get; set; }
public DateTime CreatedOn { get; set; }
}
public class MyViewModel
{
public int Id { get; set; }
public DateTime CreatedOn { get; set; }
}
我希望使用AutoMapper进行映射,将输入类的UTC日期调整为输出类的本地时间,例如,授予我在英国,其中UTC偏移当前为1h:
var input = new MyDto {Id = 1, CreatedOn = DateTime.Parse("01-01-2015 14:30")};
var output = Mapper.Map<MyViewModel>(input); // output.CreatedOn = "01-01-2015 15:30"
我可以自动为所有DateTime
属性自动配置AutoMapper吗?
N.B。调整我使用DateTime.SpecifyKind(value, DateTimeKind.Utc)
答案 0 :(得分:3)
您可以创建自定义类型转换器:
public class CustomDateTimeConverter : ITypeConverter<DateTime, DateTime> {
public DateTime Convert(ResolutionContext context) {
var inputDate = (DateTime) context.SourceValue;
var timeInUtc = DateTime.SpecifyKind(inputDate, DateTimeKind.Utc);
return TimeZoneInfo.ConvertTime(timeInUtc, TimeZoneInfo.Local);
}
}
这将使AutoMapper为两个DateTime
属性之间的每个映射执行从UTC到本地时间的转换。