我需要转换DateTimeOffset吗?到DateTime。该值最初来自XAML CalendarDatePicker,但我需要将其更改为DateTime以存储该值。我找到了 this description如何转换DateTimeOffset,但我不认为它回答了我的问题,因为它们不使用可空类型。
答案 0 :(得分:4)
Nullable类型很有用,但有时可能会让人感到困惑。 Nullable<T>
是一个结构,其中T也是一个结构。这是struct包装实例变量T的值并公开三个主要成员。
HasValue // Returns bool indicating whether there is a value present.
Value // Returns the value of T if one is present, or throws.
GetValueOrDefault() // Gets the value or returns default(T).
您可以通过添加&#39; ?
&#39;来使任何结构可为空。在声明变量类型之后,或者通过在Nullable<
处包装>
变量类型的变量类型。如下图所示:
Nullable<DateTimeOffset> a = null;
DateTimeOffset? b = null;
我相信您在此处想要的是检查实际上是否存在.HasValue
的值,然后从偏移量中取出.Value
并执行标准转换。
示例强>
var now = DateTime.Now;
DateTimeOffset? offset = now;
DateTime dateTime = offset.HasValue ? offset.Value.DateTime : DateTime.MaxValue;
或者,如果您想要DateTime?
执行此操作:
var now = DateTime.Now;
DateTimeOffset? offset = now;
DateTime? dateTime = offset.HasValue ? offset.Value.DateTime : (DateTime?)null;