聊天时间戳类似iMessage
Chat Timestamp Like iMessage
如果传入/传出消息发生在与前一条消息相同的5分钟内,我该如何不显示它们的消息时间戳。iMessage是如何做到的。我现在已经将其设置为每条消息都有时间戳,但很难弄清楚如何限制它们。我该如何设置某种过滤器?
MySQL
$query = "SELECT *
FROM messages A
JOIN profiles B ON
B.user = A.auth
JOIN lastmessage C ON
B.user = C.user
WHERE A.recip ='$view'
ORDER BY A.time DESC
";
PHP
$result = queryMysql($query);
$num = $result->num_rows;
$delayInSeconds = 300; // 5 minutes
for ($j = 0 ; $j < $num ; ++$j)
{
if ($row['time'] >= strtotime("today") && $row['lastMessageTime'] < $row['time'] - $delayInSeconds)
echo "<strong>Today</strong>" . date(' g:i A', $row['time']);
$row['lastMessageTime'] = $row['time'];
if ($row['time'] >= strtotime("yesterday") && $row['lastMessageTime'] < $row['time'] - $delayInSeconds)
echo "<strong>Yesterday</strong>". date(' g:i A', $row['time']);
$row['lastMessageTime'] = $row['time'];
if ($row['time'] >= strtotime("yesterday + 3,601") && $row['lastMessageTime'] < $row['time'] - $delayInSeconds)
echo date('D, M d, g:i A', $row['time']);
$row['lastMessageTime'] = $row['time'];
假设您正在循环处理消息?
只需跟踪上一次打印的时间戳的变量,如果时间超过5分钟,则只显示当前消息时间。
例如类似(伪)的东西
$lastMessageTime = 0; // epoch
$delayInSeconds = 300; // 5 minutes
foreach($messages as $message)
{
//Print message (with whatever formatting you want)
echo $message->message;
// Print time, if last time displayed was over 5 minutes ago
if($lastMessageTime < $message->time - $delayInSeconds)
{
//More than 5 minutes ago, print time
echo date('D, M d, g:i A', $message->time);
$lastMessageTime = $messsage->time;
}
}
我从未使用过iMessage,但你似乎在寻找这样的东西(伪代码):
$last_timestamp = '';
foreach(...){
if($last_timestamp !== $this_timestamp){
echo $this_timestamp;
$last_timestamp = $this_timestamp;
}
}
这样,只要时间戳与前一个时间戳不同,就只能打印时间戳。
编辑:要每5分钟进行一轮,您也可以这样做:
if($last_timestamp < $this_timestamp - 5 minutes)
相关文章:
- 如何每10.6秒从时间戳增加+1
- 使用AngularJS从时间戳中获取工作日
- 将时间戳转换为java中的ISO860,
- Javascript Unix时间戳转换
- JavaScript JSON关联对象键和值都作为日期时间戳
- 时间戳与mongoskin如何
- 用时间戳获取两个不同日期之间的时间差
- JavaScript到PHP的时间戳失败,增加了大约一个半月的时间
- 转换unix时间戳转换
- 带有unix时间戳的d3.js平分线
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 如何检索AMD的XHR响应代码(+时间戳)'大型Dojo
- javascript时间戳插入字符串变量
- Moment.js unix时间戳,以分钟为单位显示以前的时间
- 事件时间戳谷歌分析
- 时间戳到文本
- Unix时间戳从现在输出为1970
- 如何使用javascript在嵌入式youtube视频上创建可点击的时间戳链接
- 如何在时间标签和相同的类中以UTC格式重新格式化ISO 8601时间戳,并通过JavaScript根据用户区域设置和时区
- 聊天时间戳类似iMessage