繁体   English   中英

如何转换DateTimeOffset? 到C#中的DateTime?

[英]How do I convert a DateTimeOffset? to DateTime in C#?

我需要转换DateTimeOffset吗? 到DateTime。 该值最初来自XAML CalendarDatePicker,但我需要将其更改为DateTime来存储值。 我已经找到了有关如何转换DateTimeOffset的描述 ,但我认为它不能回答我的问题,因为它们不使用可为空的类型。

可为空的类型很有用,但一开始有时会造成混淆。 Nullable<T>是一个结构,其中T也是一个结构。 该结构包装实例变量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).

您可以通过添加' ?使任何结构可为空? '在声明变量类型之后,或者通过将变量类型包装为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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM