diff --git a/YD_AllHeartRates.Api/Mqtt/MqttBackgroundService.cs b/YD_AllHeartRates.Api/Mqtt/MqttBackgroundService.cs index 6845adc..701a9dc 100644 --- a/YD_AllHeartRates.Api/Mqtt/MqttBackgroundService.cs +++ b/YD_AllHeartRates.Api/Mqtt/MqttBackgroundService.cs @@ -144,11 +144,14 @@ namespace YD_AllHeartRates.Api.Mqtt var payload = JsonSerializer.Deserialize(msg.Payload, _jsonOpt); if (payload == null || payload.devices == null || payload.devices.Count == 0) return; - var scoreTime = DateTime.ParseExact(payload.send_time, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture); + DateTime scoreTime; - // 如果时间 < SQL Server datetime 最小值,则用当前时间代替 - if (scoreTime < (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue) + if (string.IsNullOrWhiteSpace(payload.send_time) + || !DateTime.TryParseExact(payload.send_time, "yyyy-MM-dd HH:mm:ss", + CultureInfo.InvariantCulture, DateTimeStyles.None, out scoreTime) + || scoreTime < (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue) { + // 解析失败或时间非法 → 使用当前时间 scoreTime = DateTime.Now; }