【问题标题】:Date Time compare on diffrent computers不同计算机上的日期时间比较
【发布时间】:2015-08-18 09:57:14
【问题描述】:

我有配置文件,我可以在其中设置和存储以下格式的时间:

06:00:00 AM or 01:00:15 PM

然后我使用这个时间 (loadconfig.GetTimeFromConfigThen) 来与我的服务中每秒运行的当前时间进行比较:

  Dim Time As String = DateTime.Now.ToString("hh:mm:ss tt")
            If Time = loadconfig.GetTimeFromConfigThen
..

问题是当我在其他服务器上的日期时间格式在区域设置中不同时,即使到达例如上午 06:00:00,它也永远不会进入我的 if 循环,因为我正在比较字符串和其他服务器时间变量显示为:“上午 6:00:00”。

我的问题是如何改变这种比较,无论服务器上安装什么格式,它都会正确比较从配置到电脑时间的时间?如前所述,我想将此格式保留在配置文件中:06:00:00 AM or 01:00:15 PM

【问题讨论】:

  • 解析配置文件时始终使用 CultureInfo.InvariantCulture。
  • 你能举个例子吗?

标签: .net vb.net datetime utc data-conversion


【解决方案1】:

您应该以明确的方式存储您的日期值,并使用 DateTime 变量而不是字符串来执行您的比较。

我建议你使用Round Trip format specifier:

DateTime.Now.ToString("o")

在我的机器上输出:

2015-08-18T11:09:23.0918585+01:00

因为我比UTC早了1小时

要阅读此内容,您可以使用

Dim serverDate = DateTime.ParseExact("2015-08-18T11:09:23.0918585+01:00", "o", CultureInfo.InvariantCulture)

这将使用当前语言环境正确保留和调整时区信息。

然后您可以使用 TimeSpan 计算出与此时间的差异:

Dim ts As TimeSpan = DateTime.Now - serverDate

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2011-12-28
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多