我正在对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);
}
}
答案 0 :(得分:0)
我不知道怎么做,但我猜测dtValue被创建为' DateTimeOffset' (这就是为什么它的文本表示有+00:00)。
答案 1 :(得分:-1)
我想我找到了答案并需要社区确认。
这是由于交换机案例中使用的变量名称相同。尽管有括号并且具有坚固的范围,但仍然以某种方式(不知道为什么)它将两个变量视为相同。当我将变量名称更改为唯一名称时,它开始执行所需的行为。