私は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:できません。これは、ViewModel「DateTimeOffset」とUIコントロール「DateTime」を変換するWPFコンバータです。 –
私はそうではありませんが、dtValueに+00:00のオフセットがあり、値にオフセット文字列がないことは奇妙です。あなたのデバッグウィンドウでは、 'dtValue'は' DateTimeOffset'です。デバッグをドラッグしましたか? – mayu