如何获得没有日期组件的UTC时间?

时间:2013-07-23 14:54:22

标签: .net vb.net datetime utc

如何在没有任何日期组件的情况下获取UTC time

当我尝试将Date.UtcNow分配给Date变量时,我得到以下异常:

  

时间值包含不允许的日期组件

我将Date.UtcNow分配给第三方DLL中的Date属性。我不知道这是不是.NET的不同版本的问题,或者是否是用C#编写的DLL,我在VB.NET中使用它。我可以绕过它的唯一方法是使用Date.UtcNow.ToString

3 个答案:

答案 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类型。它可以是stringobject

你还说你试过了:

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是什么样的,那么也许我可以改进我的答案。