gpt4 book ai didi

c# - 为什么这是一个时间跨度为 100 小时 100 分钟的非合法 OleAut 日期

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:10 28 4
gpt4 key购买 nike

我正在尝试从具有 100 小时 100 分钟的 TimeSpan 创建日期,但我收到了错误:

Run-time exception (line 9): Not a legal OleAut date.

Stack Trace:

[System.OverflowException: Not a legal OleAut date.] at System.DateTime.TicksToOADate(Int64 value)

using System;

public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
TimeSpan timeSpan = TimeSpan.FromHours(100) + TimeSpan.FromMinutes(100);
var OADate = DateTime.FromOADate((DateTime.MinValue.AddTicks(timeSpan.Ticks)).ToOADate());

}
}

这是为了链接到来自 vb6 的数据库中的遗留值。

它适用于小的小时和分钟值,但失败了,有什么想法吗?

创建了一个 Fiddle

最佳答案

让我们看一下您尝试转换为 OADate 的日期:

TimeSpan timeSpan = TimeSpan.FromHours(100) + TimeSpan.FromMinutes(100);

var OADate = DateTime.MinValue.AddTicks(timeSpan.Ticks);

Console.WriteLine(OADate.ToString("d MMMM yyyy HH:mm:ss", CultureInfo.InvariantCulture));

你会得到这个

5 January 0001 05:40:00

但是根据manual (粗体是我的)

The base OLE Automation Date is midnight, 30 December 1899. The minimum OLE Automation date is midnight, 1 January 0100. The maximum OLE Automation Date is the same as DateTime.MaxValue, the last moment of 31 December 9999.

这就是为什么 DateTime.MinValue.AddTicks(timeSpan.Ticks).ToOADate()非法的(OADate 低于最小值)并且你抛出了异常。

关于c# - 为什么这是一个时间跨度为 100 小时 100 分钟的非合法 OleAut 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56378031/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com