1

这个问题的主题是日期和时间计算。

.NET 与许多其他平台一样,严重依赖于某种形式的最小离散时间表示,例如DateTime.Ticks. 刻度是一种Int64最大值约为 9 * 10 18的类型。

假设 .NET 时钟从 1-JAN-0001 开始滴答作响,按照我的粗略计算,滴答声需要大约 30 000 年才能达到Int64.MaxValue.

问题是:如果明年发生这种溢出,处理这种溢出的一般方法是什么?

4

1 回答 1

4

我认为,就像许多 COBOL 程序中存在的 Y2K 错误一样,您将不得不移动根或扩展值。现在,为了使该陈述不那么抽象,假设他们移动了根 - 所以它不再是1-JAN-0001,它可能是1-JAN-1001

那会引起一些问题。这就是在 COBOL 中必须解决 Y2K 错误的方式,所以当2040很多商店滚动时,他们将不得不再次更改滚动日期,或者延长价值。

在他们的例子中,扩展值仅仅意味着使用 4 位数的年份,但在那些 MF 程序中并不总是那么简单,因为数据并不总是存储在数据库中,很多时候它是在 VSAM 文件或其他东西上。

所以,这就是我认为会发生的事情,随着计算继续变得更大更快(但更小......嗯),你会发现他们只会将值从 say Int64to扩展到Int128并将根留在它所在的位置。这将产生我能想到的零负面影响,因此这将是最安全的方法。

于 2013-03-13T17:13:42.650 回答