C# 计算一组时间里哪一个时间距离目标时间最接近
时间: 2023-08-02 12:11:42 浏览: 50
假设你有一组时间,可以用 DateTime 类型的数组表示,目标时间也是一个 DateTime 类型的变量。你可以使用以下代码找到最接近目标时间的时间:
```csharp
DateTime[] times = new DateTime[] { DateTime.Now, DateTime.Now.AddDays(1), DateTime.Now.AddDays(-1) }; // 示例时间数组
DateTime targetTime = DateTime.Now.AddHours(2); // 示例目标时间
// 找到最接近目标时间的时间
DateTime closestTime = times.OrderBy(t => Math.Abs((t - targetTime).Ticks)).First();
Console.WriteLine($"最接近目标时间的时间是:{closestTime}");
```
这里使用了 LINQ 的 OrderBy 方法和 Math.Abs 函数来计算每个时间与目标时间的时间差,并按照时间差从小到大排序,最后取第一个时间作为最接近目标时间的时间。
相关问题
C# 计算一组时间里哪一个时间 比目标时间大 并且 距离目标时间最接近
可以使用以下代码来实现:
```csharp
TimeSpan[] times = new TimeSpan[] { ... }; // 假设这是给定的一组时间
TimeSpan targetTime = ...; // 假设这是目标时间
TimeSpan closestTime = TimeSpan.MaxValue;
TimeSpan resultTime = TimeSpan.Zero;
foreach (TimeSpan time in times)
{
if (time > targetTime && (time - targetTime) < closestTime)
{
closestTime = time - targetTime;
resultTime = time;
}
}
// resultTime 就是比目标时间大并且距离目标时间最接近的时间
```
在上面的代码中,我们首先定义了一个 TimeSpan 数组 `times`,其中包含了给定的一组时间。然后我们定义了一个目标时间 `targetTime`。
我们使用 `foreach` 循环遍历整个 `times` 数组,对于每个时间 `time`,我们检查它是否比目标时间大并且距离目标时间最接近。如果是,我们就更新 `closestTime` 和 `resultTime`。
最终,`resultTime` 就是我们要找的比目标时间大并且距离目标时间最接近的时间。
C# 计算一组时间里哪一个时间 比目标时间大 并且 距离目标时间最接近 并且不能为系统最小时间
可以使用以下代码实现:
```csharp
DateTime[] times = new DateTime[] { ... }; // 时间数组
DateTime targetTime = ...; // 目标时间
// 初始化最小时间为目标时间的前一分钟
DateTime minTime = targetTime.AddMinutes(-1);
foreach (DateTime time in times)
{
if (time > targetTime && time != DateTime.MinValue)
{
// 如果当前时间比目标时间大且不为系统最小时间
if (minTime == targetTime.AddMinutes(-1) || time - targetTime < minTime - targetTime)
{
// 如果当前时间距离目标时间更近,则更新最小时间
minTime = time;
}
}
}
if (minTime == targetTime.AddMinutes(-1))
{
// 如果最小时间未被更新,则说明没有符合条件的时间
Console.WriteLine("没有符合条件的时间!");
}
else
{
Console.WriteLine("距离目标时间最接近的时间为:" + minTime);
}
```
这段代码会遍历时间数组,找出比目标时间大且不为系统最小时间的时间,并且计算与目标时间的时间差,最后找出距离目标时间最近的时间。如果没有符合条件的时间,则会输出提示信息。