【问题标题】:Should I use timestamp or date to store date to show dynamic time ago fucntion?我应该使用时间戳还是日期来存储日期以显示动态时间前功能?
【发布时间】:2016-11-20 01:34:03
【问题描述】:

我想用 jquery timeago 创建动态 timeago 函数,但我可以用 php time() 来做,因为它对每个服务器都是一样的,我可以轻松处理它。但我听说不建议存储时间戳(我从 php time() 函数中获取)它将在 2038 年等非常高的数字。

我还观看了 facebook html 代码,我认为他们也使用时间戳,因为我看到了这个:

<abbr title="Sunday, July 01, 2016 at 12:24pm" data-utime="1468743808" class="timestamp livetimestamp">
<span class="timestampContent">about an hour ago</span></abbr>

data-utime就是他们存储timestamp的意思吗

【问题讨论】:

  • 好像你在谈论 2038 年的问题:en.wikipedia.org/wiki/Year_2038_problem 本质上,时间戳将高于最大有符号 32 位整数值,但这应该没有问题,因为那么大多数(如果不是全部)机器将是 64 位的并且能够处理 64 位整数。我建议将时间存储为时间戳,它非常容易操作并且没有任何实际问题。
  • 如果我将时间戳存储在varchar(100)上会有什么问题吗?
  • 应该没问题,但 BIGINT 应该更适合时间戳。
  • @ebildude123 我想知道是什么原因让 BIGINT 比 varchar 更好?BIGINT 是 64bit 不是吗?

标签: php jquery time timestamp timeago


【解决方案1】:

年份无关紧要,db时间戳类型会占用相同的字节数。您可以在 JS 中使用 new Date().getTime() 实际上返回一个 UTC 值,因此它是一种非常有用的方式来以与本地时间无关的方式存储和管理日期。对于上面给出的示例,他们使用时间戳的数字表示。

【讨论】:

  • 是的,我的问题是我应该将 PHP time() 日期存储到 varchar 类型列
  • 随心所欲地接近是一种不好的做法。应该是数据库上的相应日期类型,以保持 Date 类型,在其他情况下,您应该关心将值转换为 varchar 和日期。答案是您不应该使用 varchar 来保留 Date 类型,而是 Date 类型本身尊重您的数据库。
  • 不,我没有用它来保存日期类型我想用它来保存时间戳 int 值,如 1468743808。你有更好的解决方案来保存它吗?
  • 仍然不确定您需要什么。我假设您想将时间戳值存储到数据库中。如果你只是想在 JS 中操作你可以这样声明变量 var milliseconds = new Date().getTime();我会说你应该更具体地说明你真正想用你的时间戳值做什么。
  • 我想使用时间戳,因为我不想处理本地化问题,然后我使用 jquery 在用户浏览器中制作时间戳真实日期(它解决了本地化问题),然后我使用了我的时间前功能。在这种情况下,您对此有何建议?
【解决方案2】:

最佳做法是对数值使用基于数字的类型,而不是基于字符的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多