我总是使用unix时间戳来处理所有事情,但我想知道是否有更好的方法.
你用什么来存储时间戳?为什么?
但是,如果选择存储时间戳,则避免区域解释问题和时间偏移问题非常重要.无论区域如何,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偏移.
如果你要存储一个日志文件,请为皮特的爱而使它成为人类可读和词法排序的东西.
2008-10-07 09:47:02例如
32位Unix时间戳将在几年内(2038年1月)溢出,因此可能需要考虑.我通常在SQL中使用DATETIME格式,即YYYY-MM-DD HH:MM:SS,时间为24小时制.我尝试以相同的格式输出文件,只是为了让我的生活更轻松.
你需要什么时代存储和解决方案?如果你需要微秒,或石器时代的日期time_t可能不是最好的.出于一般商业目的,这是相当不错的(假设64位)