我有一个页面,其中列出了帖子的所有评论。每个评论旁边都有一个完整格式的时间值,包括日期/时间(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小时前”。欢迎大家帮忙。
答案 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方法并替换节点的内容。