如何在没有任何日期组件的情况下获取UTC time
?
当我尝试将Date.UtcNow
分配给Date
变量时,我得到以下异常:
时间值包含不允许的日期组件
我将Date.UtcNow
分配给第三方DLL中的Date
属性。我不知道这是不是.NET的不同版本的问题,或者是否是用C#编写的DLL,我在VB.NET中使用它。我可以绕过它的唯一方法是使用Date.UtcNow.ToString
。
答案 0 :(得分:2)
如果您只想要时间部分,则需要获取TimeOfDay
属性。这是一个TimeStamp
:
Dim currentTime As TimeSpan = DateTime.UtcNow.TimeOfDay
答案 1 :(得分:0)
Dim dt As Date = Now.ToUniversalTime.ToShortTimeString
答案 2 :(得分:0)
您提供的错误消息:
时间值包含不允许的日期组件
不是来自.Net框架中任何异常的标准消息。你说(在评论中)你正在使用第三方DLL。该dll可能会引发异常。
如果不了解有关此dll的更多详细信息,我可以提供的建议并不多。我可以做一些假设。你说你做的是这样的事情:
thirdPartyObject.Date = DateTime.UtcNow.ToString
如果这甚至是编译,则对象上的Date
属性不是DateTime
类型。它可以是string
或object
。
你还说你试过了:
thirdPartyObject.Date = DateTime.UtcNow
如果这会编译并抛出您提到的异常,则它不能是string
。所以我得出结论,它必须是object
类型。
这很奇怪。第三方对象有一个object
类型的属性,名为Date
,只想要一个时间?设计此API的任何人都不应该考虑可用性!
作为一个超级疯狂的猜测,我会尝试这样的事情:
thirdPartyObject.Date = DateTime.MinValue + DateTime.UtcNow.TimeOfDay
或者 想要一个字符串,然后尝试:
thirdPartyObject.Date = DateTime.UtcNow.ToString("HH:mm:ss")
如果你可以澄清你正在使用的第三方对象,或者Date
属性的API是什么样的,那么也许我可以改进我的答案。