2013-07-23 3 views
0

Как получить UTC time без какого-либо компонента даты?Как получить время UTC без компонента даты?

При попытке присвоить Date.UtcNow к Date переменной я получаю следующее исключение:

значение времени содержит компонент даты, не разрешается

Я назначая Date.UtcNow к Date собственности в сторонней DLL. Я не знаю, является ли это проблемой для разных версий .NET, или это то, что DLL была написана на C#, и я использую ее в VB.NET. Единственный способ, которым я могу обойти это, - использовать Date.UtcNow.ToString.

+2

Я пробовал это, Dim d As Date = Date.UtcNow, который работал. Отредактируйте свой пост, чтобы показать, что не работает. – dbasnett

+0

@dbasnett: Я присваиваю 'Date.UtcNow' свойство' Date' в сторонней DLL. Я не знаю, является ли это проблемой для разных версий .NET, или это то, что DLL была написана на 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 - отлично работает здесь. Код был скопирован/вставлен из тестовой программы. CDate() требуется, если вы работаете под гандикапом Option Strict On. :) – rheitzman

+0

Подозревается как много. Однако в Дате еще есть компонент даты. – dbasnett

2

Если вы просто хотите часть времени, вам необходимо получить TimeOfDay. Это TimeStamp:

Dim currentTime As TimeSpan = DateTime.UtcNow.TimeOfDay 
0

Сообщение об ошибке вы предоставили:

значение времени содержит компонент даты, не разрешается

Не стандартное сообщение от каких-либо исключений в. NET Framework. Вы сказали (в комментариях), что используете стороннюю 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") 

Если вы может уточнить, какой сторонний объект вы используете, или как выглядит его API для свойства Date, то, возможно, я смогу уточнить свой ответ.

Смежные вопросы