在网页中显示时间

时间:2010-02-01 14:54:31

标签: php javascript jquery datetime

我有一个页面,其中列出了帖子的所有评论。每个评论旁边都有一个完整格式的时间值,包括日期/时间(2010-01-02 11:11:20)。

我知道我可以在显示之前用PHP格式化它,所以它显示了;

posted 40 secs ago 
posted 5 days ago

但这不会有效,因为我要在生成页面后缓存页面。

在SO上我看到他们有一些用于显示它的java脚本,所以它在客户端的浏览器上运行:

alt text http://img528.imageshack.us/img528/5442/35118769.png

所以基本上我需要一个在浏览器上运行的java脚本,而不是显示我的日期/时间显示“发布4小时前”。欢迎大家帮忙。

3 个答案:

答案 0 :(得分:8)

你想要这个:timeago: a jQuery plugin

  

Timeago是一个jQuery插件,可以轻松支持自动更新模糊时间戳(例如“4分钟前”或“约1天前”)。

我进一步引用:

  
      
  • 即使页面在10分钟前打开,也要避免时间戳“1分钟前”; timeago自动刷新。

  •   
  • 您可以在Web应用程序中充分利用页面缓存,因为时间戳不是在服务器上计算的。

  •   

所以它应该符合你的需要。

答案 1 :(得分:2)

您可以在渲染时将页面的“时间戳”放入页面中。这是不变的固定时间。查看PHP的time函数(http://www.php.net/manual/en/function.time.php)。它提供了自UNIX纪元开始以来的秒数。

然后,当页面运行时,使用Javascript的Date对象。它封装了类似的东西。在新的Javascript Date对象上执行getTime(),这将使您获得自UNIX纪元以来的秒数。

从另一个中减去一个以获取当时和现在之间的经过时间,并执行任何非常格式化的操作,使其显示在页面中。

编辑:另请参阅Felix关于timeago的回答,这是一个非常好的工具,可以自动为您完成此过程的后半部分。

答案 2 :(得分:0)

以parseDate方法接受的格式输出日期,或作为日期的构造函数参数输出。将它们放在一些节点中,稍后可以通过javascript框架(或您自己的方法)轻松抓取它们,然后对这些抓取的值执行一些time / datediff方法并替换节点的内容。