J c*_*J c 91
但是,如果选择存储时间戳,则避免区域解释问题和时间偏移问题非常重要.无论区域如何,Unix时间戳都被解释为相同,并且无论时区如何都是从同一时间点计算的 - 这些都是好事.
请注意将时间戳存储为模糊字符串,例如01/02/2008,因为这可以解释为2008年1月2日或2008年2月1日,具体取决于区域设置.
存储小时/分钟/秒时,重要的是要知道"指定了"哪个小时/分钟/秒.您可以通过包含时区信息(Unix时间戳不需要,因为它假定为UTC)来完成此操作.
但请注意,Unix时间戳不能唯一地表示某些时刻:当UTC中存在闰秒时,Unix时间戳不会改变,因此UTC时间23:59:60和第二天00:00:00都有相同的时间戳Unix表示法.因此,如果您确实需要一秒或更好的分辨率,请考虑另一种格式.
如果您更喜欢比Unix时间戳更易于阅读的人类可读格式,请考虑使用ISO 8601.
一种有助于保持直观的技术是将日期存储为UTC,并且仅在向用户显示日期时应用时区或DST偏移.
Rya*_*yan 26
如果你要存储一个日志文件,请为皮特的爱而使它成为人类可读和词法排序的东西.
2008-10-07 09:47:02例如
Tho*_*ens 14
32位Unix时间戳将在几年内(2038年1月)溢出,因此可能需要考虑.我通常在SQL中使用DATETIME格式,即YYYY-MM-DD HH:MM:SS,时间为24小时制.我尝试以相同的格式输出文件,只是为了让我的生活更轻松.
这取决于您需要时间戳的用途。
unix 时间戳不能表示 2008-12-31T23:59:59Z 之后 1 秒的时间。如果您使用 unix 时间戳执行 '2009-01-01T09:00:00' - '2008-12-31T09:00:00' ,结果不正确:这两个日期之间会有闰秒,并且它们是分开的86401 秒(不是 Unix 时间戳告诉你的 86400)。
除此之外以及其他响应者所说的,是的——unix 时间戳是正确的方法:)