2
半天

說我有一個POCO存儲的日期範圍如下:使用automapper與datetime和布爾表示在POCO

public class DateRange() 
{ 
public DateTime FromDate{get;set;} 
public DateTime ToDate{get;set;} 
} 

我希望能夠節省一半的一天的開始和/或範圍的結尾。爲了做到這一點,我將把我的數據作爲jqueryui日期選擇器顯示,從日期到日期以及每個日期選擇器旁邊的複選框表示1/2天。我的視圖模型會是這個樣子:

public class DateRangeModel() 
{ 
public DateTime FromDate {get; set;} 
public DateTime ToDate{get;set;} 
public bool IsFromDateHalfDay{get; set;} 
public bool IsToDateHalfDay {get; set;} 
} 

當半天覆選框被選中的FROM日期我需要在實體保存沒有fromdate作爲選定一天+ 12小時,半天,當複選框被選爲ViewModel中的ToDate我需要將ToDate作爲選定日期+12小時保存在實體中。

使用Automapper可以做到這一點嗎?如果不是,你能建議一個更好的/不同的方法嗎?我不想讓bool代表實體中的半天,因爲我想單獨使用DateTimes進行計算。

一些例子(還是考慮我應該怎麼代表一定範圍的1天和1/2一天 - 將需要測試計算範圍很多!):

A Date Range of 1/2 Day From 24th May to a full day 27th May: 
2011-05-24 12:00:00.000 => 2011-05-28 00:00:00.000 

A Date Range of Full Day From 24th May to a 1/2 day 27th May: 
2011-05-24 00:00:00.000 => 2011-05-27 12:00:00.000 

A Half Day on 24th May: 
2011-05-24 12:00:00.000 => 2011-05-25 00:00:00.000  

A Full Day on 24th May: 
2011-05-24 12:00:00.000 > 2011-05-25 00:00:00.000 
+0

快速閱讀後,似乎你可能會更好地存儲起始DateTime和TimeSpan長度。至少要考慮一些事情。 – 2011-06-14 19:55:45

+0

是的,這絕對讓我想起了存儲範圍的最佳方式!我將需要代表跨度在日曆上,並保存跨度等天數和工作日等 – woggles 2011-06-14 20:09:16

+0

這導致我問http://stackoverflow.com/questions/6355316/storing-a-timespan- between-two-datetimes – woggles 2011-06-15 09:01:06

回答

1

難道我們假設沒有fromdate/ToDate只能爲全天(中午12:00)或半天(中午12:00)?

域查看(如果需要):

CreateMap<DateRange, DateRangeModel>() 
    .ForMember(dest => dest.IsFromDateHalfDay, opts => opts.MapFrom(src=>src.FromDate.Hour == 12)) 
    .ForMember(dest => dest.IsToDateHalfDay, opts => opts.MapFrom(src=>src.ToDate.Hour == 12)); 

查看到域

CreateMap<DateRangeModel, DateRange>() 
    .ForMember(dest => dest.FromDate, opts => opts.MapFrom(src=>src.FromDate.AddHours(-1 * src.IsFromDateHalfDay ? 12 : 0)) 
    .ForMember(dest => dest.ToDate, opts => opts.MapFrom(src=>src.ToDate.AddHours(src.IsToDateHalfDay ? 12 : 0)); 
+0

是ToDate/FromDate只能是1/2或全天。生病編輯這個問題來描述我如何需要DateTimes代表:) – woggles 2011-06-14 19:46:27