2015-05-09 53 views
6

說我有2類具有相同的屬性集:AutoMapper配置使用本地時間對所有的DateTime屬性

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" 

我可以自動cofigure AutoMapper這對所有DateTime屬性?

N.B.調整我用DateTime.SpecifyKind(value, DateTimeKind.Utc)

回答

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執行從UTC轉換爲本地時間爲2和DateTime性能之間的每一個映射。

相關問題