什么是代表一天的最佳格式?

时间:2008-10-20 09:17:27

标签: datetime representation

如何表示一天的开始和结束时间?

以2008年10月23日为例,它是在2008-10-23 12:00:00 AM和2008-10-23 11:59:59 PM开始的吗?

7 个答案:

答案 0 :(得分:15)

答案 1 :(得分:4)

当然,如果你只想代表1天,你根本不需要包括时间 - 特别是因为这引起了关于一天开始或结束的讨论。根据我的经验,日期处理通常很复杂,没有引入任何额外的复杂性。

今天是2008年10月20日 - 不再需要更多信息。

或者我错过了什么?

答案 2 :(得分:2)

十月23开始于2008-10-23 12 AM,并于2008-10-24 12 AM结束 - 一天结束于下一个开始的完全相同的点。最后一秒开始于晚上11:59:59,但在一天结束之前你仍然有一整秒。

答案 3 :(得分:1)

你的记谱很奇怪。我建议指定全天范围的标准方法是:

2008-10-23 00:00:00并完成2008-10-23 23:59:59

答案 4 :(得分:1)

您在问题中提到的那一天的定义是> = 2008-10-23 00:00:00和< 2008-10-24 00:00:00。

答案 5 :(得分:1)

如果您使用数学区间符号,则将其写为

  

[2008-10-23 00:00:00,2008-10-24 00:00:00)

[表示包含,表示最多但不包括。

通过这种方式,您可以更轻松地为用户和您自己。

答案 6 :(得分:1)

这取决于你一天的意思。遗憾的是,日期处理总是比它看起来更复杂。

要将您的示例转换为24小时ISO日期格式,您可以说:

2008-10-23 00:00:00 - 2008-10-23 23:59:59

但是,取决于您是否将范围解释为包含或排除,可以省略当天的最后一秒*。程序员通常更喜欢保持上限独占,所以你会选择:

2008-10-23 00:00:00 - 2008-10-24 00:00:00

或者,作为一种更好的陈述方式,如果支持(或人类可读性):

2008-10-23 00:00:00 - 2008-10-23 24:00:00

*:实际上可能不止一个。如果跨度表示UTC时区中的一天(或与其对齐的另一个时区,很可能),那么在一天结束时,有时可能会有一个额外的'闰秒',即23:59:60尝试使UTC与恒星时间保持一致。下一个闰秒计划在今年年底。然而,许多系统忽略了闰秒,因为它们很愚蠢而烦人。

如果您想独立于时区表示“日历日”,最好的选择是朱利安日数。今天是2454760。