Przejdź do treści

DevStyle - Strona Główna
Automapper i mapowanie z czasu UTC

Automapper i mapowanie z czasu UTC

Maciej Aniserowicz

11 marca 2010

Backend

Niedawno popisałem troszkę o czasie UTC i dlaczego tylko taka reprezentacja czasu powinna znajdować drogę do bazy danych. A teraz… w jaki sposób przygotować datę do podróży w drugą stronę, czyli do użytkownika.

Z Automapperem jest to zadanie doprawdy banalne, wystarczy odpowiedni Type Converter:

  1:  public class UtcToLocalTimeConverter : TypeConverter<DateTime, DateTime>
  2:  {
  3:  	protected override DateTime ConvertCore(DateTime source)
  4:  	{
  5:  		string targetTimeZoneName = Config.TargetTimeZone;
  6:  
  7:  		TimeZoneInfo targetTimeZone = TimeZoneInfo.FindSystemTimeZoneById(targetTimeZoneName);
  8:  
  9:  		return TimeZoneInfo.ConvertTimeFromUtc(source, targetTimeZone);
 10:  	}
 11:  }

Teraz tylko rejestracja w konfiguracji…

  1:  Mapper.CreateMap<DateTime, DateTime>().ConvertUsing<UtcToLocalTimeConverter>();

i już, automagicznie wszystkie nasze DTO przesyłane do użytkownika będą miały odpowiednią dla niego datę. A system nadal posiada wszelkie zalety "systemu przechowującego datę w UTC", bez żadnego dodatkowego wysiłku z naszej strony!

Zobacz również