我正在读回DateTime?从我看来的价值。现在我查看是否json.loads
DateTime? NextUpdate
如果是,请将该时间转换为HasValue
。
从阅读本文来看,似乎我需要使用UTC
,但我的作业告诉我,使用该运算符时,System.NUllable不包含null coalescing operator
的定义。
我在SO上搜索过类似的问题,但没有运气。
问题:
如何将null DateTime值转换为UTC?
代码:
我只是在检查DateTime?有一个值,如果是这样,将DateTie转换为UTC -
ToUniversalTime()
模型中的 if (escalation.NextUpdate.HasValue)
{
escalation.NextUpdate = escalation.NextUpdate ?? escalation.NextUpdate.ToUniversalTime();
}
else
{
escalation.NextUpdate = null;
}
属性:
NextUpdate
答案 0 :(得分:10)
您的代码错误的方式不止一种。
??
运算符如果非空则返回左侧,否则返回右侧。
由于您已选中escalation.NextUpdate.HasValue
为true
,因此左侧不是null
,您再次指定相同的日期(不转换为UTC)。
Nullable<DateTime>
未声明ToUniversalTime()
,您需要对该值执行此操作。
所以最终的代码应如下所示:
if (escalation.NextUpdate.HasValue)
escalation.NextUpdate = escalation.NextUpdate.Value.ToUniversalTime();
或使用C#6
escalation.NextUpdate = escalation.NextUpdate?.ToUniversalTime();
不需要else
分支,因为在这种情况下它仍然是null
。
答案 1 :(得分:5)
如果您使用的是c#6,则非常简单
<div id="animations">
<div class="clouds cloud-1"></div>
<div class="clouds cloud-2"></div>
<div class="clouds cloud-3"></div>
<div class="clouds cloud-4"></div>
<div class="clouds cloud-5"></div>
<div class="clouds cloud-6"></div>
<div class="clouds cloud-7"></div>
<div class="clouds cloud-8"></div>
<div class="clouds cloud-9"></div>
<div class="clouds cloud-10"></div>
<div class="clouds cloud-11"></div>
<div class="clouds cloud-12"></div>
<div class="clouds cloud-13"></div>
</div>
这转换为好像NextUpdate不为null调用ToUniversalTime()else返回null
如果你不能使用c#6那么内联可能是你最好的选择
escalation.NextUpdate?.ToUniversalTime();
这基本上与你的完全一样,如果你错过了你可以错过了可空的Value属性并且纠正你使用的?操作