我正在做一個對象到DateTime的簡單轉換。該對象也是一個DateTime。但是,取消裝箱的值與對象不同。爲什麼DateTime不能正確拆箱?
我甚至試過System.Convert.ToDateTime(value)
但這沒有什麼區別。
這裏發生了什麼,我失蹤了。
private object Convert(object value, DateTimeConversionTypes dateTimeConversionTypes)
{
switch (dateTimeConversionTypes)
{
case DateTimeConversionTypes.ToLocal:
{
if (!(value is DateTimeOffset)) return null;
var dtValue = (DateTimeOffset)value;
if (dtValue == DateTimeOffset.MinValue) return null;
var returnValue = dtValue.ToLocalTime().DateTime;
returnValue = DateTime.SpecifyKind(returnValue, DateTimeKind.Local);
return returnValue;
}
case DateTimeConversionTypes.ToUtc:
{
if (!(value is DateTime)) return null;
var dtValue = (DateTime)value;
if (dtValue == DateTime.MinValue) return null;
var returnValue = dtValue.ToUniversalTime();
returnValue = DateTime.SpecifyKind(returnValue, DateTimeKind.Utc);
return new DateTimeOffset(returnValue);
}
default:
throw new ArgumentOutOfRangeException(nameof(dateTimeConversionTypes), dateTimeConversionTypes, null);
}
}
在這兩種情況下你應該使用DateTimeOffset嗎? – mayu
@mayu:我不能,這是一個WPF轉換器,在ViewModel'DateTimeOffset'和UI控件'DateTime'之間轉換。 –
我不知道它是什麼,但奇怪的是dtValue的偏移量爲+00:00,而且值沒有偏移字符串。在你的調試窗口中'dtValue'是一個'DateTimeOffset'。你有沒有做任何調試拖動? – mayu