如何在 C# 中将字符串“203658.000”与 UTC 进行比较?
How to compare string "203658.000" to UTC in C#?
我有一个字符串“203658.000”,它对来自 GPS 接收器的 UTC 时间进行编码。
格式为“hhmmss.ffff”,其中:
- "hh" 是小时(固定两位数)
- "mm"为分钟(固定两位数)
- “ss”为秒(固定两位数)
- “fff”是秒的小数部分(可变长度)
我想知道时间是否正确。为此,我认为我应该将字符串转换为 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 小时。
我有一个字符串“203658.000”,它对来自 GPS 接收器的 UTC 时间进行编码。
格式为“hhmmss.ffff”,其中:
- "hh" 是小时(固定两位数)
- "mm"为分钟(固定两位数)
- “ss”为秒(固定两位数)
- “fff”是秒的小数部分(可变长度)
我想知道时间是否正确。为此,我认为我应该将字符串转换为 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 小时。