【问题标题】:How to get UTC time without date component?如何在没有日期组件的情况下获取 UTC 时间?
【发布时间】:2013-07-23 14:54:22
【问题描述】:

如何获得不带任何日期组件的UTC time

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

时间值包含不允许的日期部分

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

【问题讨论】:

  • 我试过这个,Dim d As Date= Date.UtcNow,它有效。请编辑您的帖子以显示无效的内容。
  • @dbasnett:我将Date.UtcNow 分配给第三方DLL 中的Date 属性。我不知道这是否是不同版本的 .NET 的问题,或者是否是 DLL 是用 C# 编写的,但我在 VB.NET 中使用它。我可以绕过它的唯一方法是使用Date.UtcNow.ToString

标签: .net vb.net datetime utc


【解决方案1】:

如果您只想要时间部分,则需要获取TimeOfDay 属性。这是TimeStamp

Dim currentTime As TimeSpan = DateTime.UtcNow.TimeOfDay

【讨论】:

    【解决方案2】:
    Dim dt As Date = Now.ToUniversalTime.ToShortTimeString
    

    【讨论】:

    • 这甚至无法编译。
    • 我的环境是 VS2010、VB.Net、Win 7 64、.Net 4 Client Profile、WinForm - 在这里可以正常工作。代码是从测试程序中复制/粘贴的。如果您在 Option Strict On 的障碍下运行,则需要 CDate()。 :)
    • 怀疑一样多。但是 Date 仍然有日期组件。
    • 我猜你需要使用除日期之外的其他数据类型。根据定义,日期具有日期组件。我认为您需要发布遇到问题的代码。
    【解决方案3】:

    您提供的错误信息:

    时间值包含不允许的日期部分

    不是来自 .Net 框架中任何异常的标准消息。您说(在 cmets 中)您正在使用第三方 dll。该 dll 中可能会引发异常。

    在不了解有关此 dll 的更多详细信息的情况下,我无法提供很多建议。不过我可以做一些假设。你说你正在做这样的事情:

    thirdPartyObject.Date = DateTime.UtcNow.ToString
    

    如果这是偶数正在编译,那么对象上的Date 属性不是DateTime 类型。它是stringobject

    你还说你试过了:

    thirdPartyObject.Date = DateTime.UtcNow
    

    如果它编译并抛出你提到的异常,那么它不能是string。所以我断定它一定是object类型。

    这很奇怪。第三方对象有一个名为Dateobject 类型的属性,它只需要一个时间?设计这个 API 的人一定没有考虑可用性!

    作为一个超级疯狂的猜测者,我会尝试这样的事情:

    thirdPartyObject.Date = DateTime.MinValue + DateTime.UtcNow.TimeOfDay
    

    或者它确实想要一个字符串,然后尝试:

    thirdPartyObject.Date = DateTime.UtcNow.ToString("HH:mm:ss")
    

    如果您可以澄清您正在使用的第三方对象,或者它的 API 对于 Date 属性的外观,那么也许我可以完善我的答案。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 2020-01-07
      • 1970-01-01
      相关资源
      最近更新 更多