1

我正要自己写这个,但我知道它必须存在,我只是设法避免所有会引导我的谷歌关键字。

我会寻找像 DDDMMMYYY 这样的东西,其中 D、M、Y 是天数、月数和年数。所以 00103000 表示跨度为三个月零一天,或者 000000001 表示跨度为一年。理想情况下,这种格式还有一个标准的应用方式,可以考虑到时间跨度计算的所有缺陷,比如一个月内不同的天数、闰年等。

我不是在寻找一种方法来计算两个已知时间戳之间的时间跨度,正如这里所问的那样(在 C# 中计算相对时间),我正在寻找类似于我可以存储的特定字符串格式的东西,它可以指示时间跨度用于从已知日期确定第二个未知日期。

例如,使用我上面的虚构格式:如果我说“从 2009 年 9 月 15 日开始计算 00103000 的日期”将返回“2009 年 12 月 16 日”,即 9 月 15 日之后的三个月零一天。

4

2 回答 2

4

我建议查看ISO 8061格式的持续时间。它不仅易于解析并应用于给定日期,而且是一个众所周知的标准,有大量可用资源。

从两个时间点确定持续时间有点棘手,但这只是因为在没有应用程序输入的情况下,不清楚从 3 月 1 日到 6 月 1 日是 3 个月还是 92 天。尽管如此,该格式既可以同样好地表达,也可以表达,例如,0.25 年。

于 2009-10-22T16:23:38.970 回答
2

最简单和最常见的表示是数字:时间跨度中的秒数(可能是小数,也可能不是小数,具体取决于您的需要)。许多时间库已经将时间表示为自 epoch 以来的秒数,因此这使得时间的加减变得微不足道。唯一值得关注的主要问题是溢出(例如2038 年错误)。

于 2009-10-22T16:09:59.730 回答