如何将可为空的 DateTime 转换为 UTC DateTime
How to cast a nullable DateTime to UTC DateTime
我正在读回日期时间?我认为的价值。现在我检查一下 NextUpdate
DateTime? HasValue
如果是,则将该时间转换为 UTC
。
从阅读这篇文章看来我需要使用 null coalescing operator
但我的作业告诉我 System.NUllable 在使用该运算符时不包含 ToUniversalTime()
的定义。
我在 SO 上搜索了一个类似的问题,但没有成功。
问题:
如何将空 DateTime 值转换为 UTC?
代码:
我只是在检查日期时间?有一个值,如果有,则将该 DateTie 转换为 UTC -
if (escalation.NextUpdate.HasValue)
{
escalation.NextUpdate = escalation.NextUpdate ?? escalation.NextUpdate.ToUniversalTime();
}
else
{
escalation.NextUpdate = null;
}
我的NextUpdate
属性中的模型:
public DateTime? NextUpdate { get; set; }
如果您使用的是 c#6,那么它非常简单
escalation.NextUpdate?.ToUniversalTime();
这就好像 NextUpdate 不是 null 调用 ToUniversalTime() else return null
如果您不能使用 c#6,那么内联 if 可能是您最好的选择
escalation.NextUpdate.HasValue ? (DateTime?)escalation.NextUpdate.Value.ToUniversalTime():null;
如果您错过了可为空的值 属性 并更正了您对 ?? 的使用,这与您的完整内容基本相同。运算符
您的代码有不止一处错误。
??
运算符returns左边如果不为空,否则右边.
由于您已经检查过 escalation.NextUpdate.HasValue
是 true
,左侧不是 null
并且您再次分配相同的日期(没有转换为 UTC)。
Nullable<DateTime>
未声明 [=17=],您需要对值进行声明。
所以最终的代码应该是这样的:
if (escalation.NextUpdate.HasValue)
escalation.NextUpdate = escalation.NextUpdate.Value.ToUniversalTime();
或使用 C#6
escalation.NextUpdate = escalation.NextUpdate?.ToUniversalTime();
不需要 else
分支,因为在那种情况下它会是 null
。
我正在读回日期时间?我认为的价值。现在我检查一下 NextUpdate
DateTime? HasValue
如果是,则将该时间转换为 UTC
。
从阅读这篇文章看来我需要使用 null coalescing operator
但我的作业告诉我 System.NUllable 在使用该运算符时不包含 ToUniversalTime()
的定义。
我在 SO 上搜索了一个类似的问题,但没有成功。
问题:
如何将空 DateTime 值转换为 UTC?
代码:
我只是在检查日期时间?有一个值,如果有,则将该 DateTie 转换为 UTC -
if (escalation.NextUpdate.HasValue)
{
escalation.NextUpdate = escalation.NextUpdate ?? escalation.NextUpdate.ToUniversalTime();
}
else
{
escalation.NextUpdate = null;
}
我的NextUpdate
属性中的模型:
public DateTime? NextUpdate { get; set; }
如果您使用的是 c#6,那么它非常简单
escalation.NextUpdate?.ToUniversalTime();
这就好像 NextUpdate 不是 null 调用 ToUniversalTime() else return null
如果您不能使用 c#6,那么内联 if 可能是您最好的选择
escalation.NextUpdate.HasValue ? (DateTime?)escalation.NextUpdate.Value.ToUniversalTime():null;
如果您错过了可为空的值 属性 并更正了您对 ?? 的使用,这与您的完整内容基本相同。运算符
您的代码有不止一处错误。
??
运算符returns左边如果不为空,否则右边.
由于您已经检查过 escalation.NextUpdate.HasValue
是 true
,左侧不是 null
并且您再次分配相同的日期(没有转换为 UTC)。
Nullable<DateTime>
未声明 [=17=],您需要对值进行声明。
所以最终的代码应该是这样的:
if (escalation.NextUpdate.HasValue)
escalation.NextUpdate = escalation.NextUpdate.Value.ToUniversalTime();
或使用 C#6
escalation.NextUpdate = escalation.NextUpdate?.ToUniversalTime();
不需要 else
分支,因为在那种情况下它会是 null
。