我总是使用unix时间戳做任何事情,但我想知道是否有更好的方法。
你用什么来存储时间戳?为什么?
发布于 2008-10-07 14:50:28
无论您如何选择存储时间戳,重要的是要避免区域解释问题和时间偏移问题。无论地域如何,Unix时间戳的解释都是相同的,并且无论时区如何,都是从相同的时间点开始计算的-这些都是好东西。
注意将时间戳存储为不明确的字符串,例如01/ 02 / 2008,因为这可能被解释为2008年1月2日或2008年2月1日,具体取决于区域设置。
在存储小时/分钟/秒时,重要的是要知道指定的是“哪一个”小时/分钟/秒。您可以通过包含时区信息( Unix时间戳不需要,因为假定它是UTC)来实现这一点。
但是,请注意,Unix时间戳不能唯一地表示时间上的某些时刻:当UTC中有闰秒时,Unix时间戳不会更改,因此23:59:60 UTC和第二天00:00:00具有相同的Unix表示。因此,如果您确实需要一秒或更高的分辨率,请考虑另一种格式。
如果您更喜欢一种更易于阅读的存储格式,而不是Unix时间戳,请考虑使用ISO 8601。
一种有助于保持简单明了的技术是将日期存储为UTC,并在向用户显示日期时仅应用时区或DST偏移量。
发布于 2008-10-07 14:48:15
如果您正在存储日志文件,请看在pete的份上,使其具有人类可读性和词法可排序性。
例如: 2008-10-07 09:47:02。
发布于 2008-10-07 14:32:49
32 bit Unix timestamps will overflow in a few years (January 2038),所以这可能是一个考虑因素。我通常在SQL中使用日期时间格式,它是YYYY-MM-DD HH:MM:SS,时间是24小时制。我尝试输出到相同格式的文件,只是为了让我的生活更容易。
https://stackoverflow.com/questions/178704
复制相似问题