我正在做一个对象到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