2013-07-23 52 views
0

如何获得没有日期分量的UTC time如何获取没有日期分量的UTC时间?

当我尝试分配Date.UtcNowDate变量,我得到以下异常:

时间值包含不允许

我分配Date.UtcNowDate财产的日期组件在第三方DLL中。我不知道这是不是.NET版本的问题,或者它是否是用C#编写的,我在VB.NET中使用它。我可以绕过它的唯一方法是使用Date.UtcNow.ToString

+2

我试过这个,Dim d As Date = Date.UtcNow,它工作。编辑您的帖子,以显示什么是不工作请。 – dbasnett

+0

@dbasnett:我将'Date.UtcNow'分配给第三方DLL中的'Date'属性。我不知道这是不是.NET版本的问题,或者它是否是用C#编写的,但是我在VB.NET中使用它。唯一的办法就是使用'Date.UtcNow.ToString'。 – CJ7

回答

0
Dim dt As Date = Now.ToUniversalTime.ToShortTimeString 
+1

这甚至没有编译。 – dbasnett

+0

我的环境是VS2010,VB.Net,Win 7 64,.Net 4 Client Profile,WinForm - 在这里可以正常工作。代码是从测试程序复制/粘贴的。 如果您在Option Strict On的障碍下运行,则需要CDate()。 :) – rheitzman

+0

尽可能多的怀疑。但日期仍然有日期组件。 – dbasnett

2

如果您只是想要时间部分,您需要获得TimeOfDay属性。这是一个TimeStamp:你提供

Dim currentTime As TimeSpan = DateTime.UtcNow.TimeOfDay 
0

错误消息:

时间值包含不允许

日期组件不是从任何异常的标准信息。网络框架。你说(在评论中)你使用的是第三方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") 

如果您可以阐明你正在使用什么第三方对象,或者它的API是什么样的Date财产,那么也许我可以改进我的答案。