如何在 C# 中将字符串“203658.000”与 UTC 进行比较?

How to compare string "203658.000" to UTC in C#?

我有一个字符串“203658.000”,它对来自 GPS 接收器的 UTC 时间进行编码。

格式为“hhmmss.ffff”,其中:

我想知道时间是否正确。为此,我认为我应该将字符串转换为 DateTime,然后将其与 DateTime.UtcNow.

进行比较

到目前为止,这是我的代码:

int timestamp = (int)Convert.ToDouble("203658.000");
int hours = (timestamp % 1000000 - timestamp % 10000) / 10000;
int minutes = (timestamp % 10000 - timestamp % 100) / 100;
int seconds =  timestamp % 100;

DateTime dateTime = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, hours, minutes, seconds);

if (DateTime.UtcNow.Equals(dateTime))
{
    // Pass
}

是否有 TryParse 方法来代替以数学方式提取小时、分钟和秒?

您应该能够使用 DateTime.ParseExact 来获得您需要的东西。

DateTime.ParseExact("203658.000", "HHmmss.fff", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal)

不过在午夜前后要小心,因为如果日期不匹配,时间可能会差将近 24 小时。