linux时间戳保存在哪里,UNIX时间戳是存储时间戳的最佳方法吗?

UNIX时间戳是存储时间戳的最佳方法吗?

我总是对所有内容都使用unix时间戳,但想知道是否有更好的方法。

您使用什么来存储时间戳?为什么?

Rich Bradshaw asked 2020-01-08T16:24:26Z

9个解决方案

89 votes

无论您选择存储时间戳,避免区域解释问题和时间偏移问题都是很重要的。 Unix时间戳的解释不受区域限制,并且从相同的时间点进行计算,而不管时区如何-这些都是好东西。

当心将时间戳存储为模棱两可的字符串(例如01/02/2008),因为根据地区可以将时间戳解释为2008年1月2日或2008年2月1日。

当存储小时/分钟/秒时,重要的是要知道“哪个”小时/分钟/秒被指定。 您可以通过包括时区信息(Unix时间戳不需要,因为它被假定为UTC)来做到这一点。

但是,请注意,Unix时间戳不能唯一地表示时间上的某些瞬间:当UTC中有a秒时,Unix时间戳不会改变,因此,UTC的第二天23:59:60和第二天的00:00:00具有相同的时间 Unix表示形式。 因此,如果您确实需要一秒或更佳的分辨率,请考虑另一种格式。

如果您希望使用比Unix时间戳更可读的格式来存储,请考虑使用ISO 8601。

一种使事情变得简单明了的技术是将日期存储为UTC,并且在向用户显示日期时仅应用时区或DST偏移量。

J c answered 2020-01-08T16:25:27Z

26 votes

如果您要存储日志文件,请对pete的热爱使之成为人类可读和可按词法排序的东西。

以2008-10-07 09:47:02为例。

Ryan answered 2020-01-08T16:25:52Z

14 votes

32位Unix时间戳记将在几年后(2038年1月)溢出,因此可能需要考虑。 我通常在SQL中使用DATETIME格式,即YYYY-MM-DD HH:MM:SS,其时间为24小时制。 我尝试以相同的格式输出到文件,只是为了让我的生活更轻松。

Thomas Owens answered 2020-01-08T16:26:12Z

6 votes

您需要存储什么时代以及什么分辨率?如果您需要微秒,或者是石器时代的日期,那么time_t可能不是最佳选择。对于一般业务而言,它相当不错(假设为64位)

Martin Beckett answered 2020-01-08T16:26:32Z

4 votes

这取决于您需要的时间戳。

Unix时间戳不能表示2008-12-31T23:59:59Z之后1秒的时间。如果您使用unix时间戳记执行'2009-01-01T09:00:00'-'2008-12-31T09:00:00',则结果不正确:这两个日期之间会有a秒,并且它们会分开 减少了86401秒(不是unix时间戳会告诉您的86400)。

除此之外,还有其他响应者所说的,是的-Unix时间戳是必经之路:)

pmg answered 2020-01-08T16:27:02Z

4 votes

在数据库上加时间戳记不是一个好主意,因为它们没有考虑夏令时或当前本地时间。 在MySQL上,最好将其存储为时间,然后使用MySQL日期和时间函数检索所需的部分,或与其他日期进行比较。

Marius answered 2020-01-08T16:27:22Z

2 votes

如果我需要亚秒级精度,则为timeval样式(time_t +微秒),否则为time_t。 您可以使用64位整数值存储time_t * 1000000 + usec,并且防溢出超过+/- 292,000年。

Bklyn answered 2020-01-08T16:27:43Z

1 votes

UNIX Timestamp 32位问题对于在2038年以后输入将来日期的用户来说似乎很烦人。

对MySQL使用DATETIME序列,或将日期存储为BIGINT(8)无符号(最大:18位数)或FLOAT,以便可以输入大数字。 然后,您将无法使用PHP的date()函数,因为它仅允许使用整数作为参数(受32位系统限制)。

我发现的解决方案是使用PHP 5.2.0函数。 这是DateTime PHP解决方案。

无需更改UNIX_TIMESTAMP格式。 只要您将BIGINT(8)取消签名作为时间戳的MySQL存储。 您将不再受32位系统的限制。

Dexter answered 2020-01-08T16:28:17Z

0 votes

时间戳基本上是:

一个独特的时间点

由于时间点具有无限的分辨率,因此选择时间戳记格式的重要之处在于:分辨率是否足够?

Unix时间仅以秒为单位。

Ext 4有纳秒

Java有十亿分之一秒

对于我拥有的大多数应用程序,纳秒就足够了。 因此,到目前为止,Java Timestamp对我而言具有正确的分辨率。

Andre Bossard answered 2020-01-08T16:29:03Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值