聊天时间格式化 * 1. 每五分钟为一个跨度 * 2. 今天显示,小时:分钟,例如:11:12 * 3. 昨天显示,昨天 小时:分钟 例如:昨天 11:12 * 4. 一周内显示,星期几 小时:分钟 例如:星期四 11:12 * 5. 日期差大于一周显示,年月日 小时:分钟 例如:2021年9月30日 11:12
时间: 2024-04-16 16:23:58 浏览: 147
要根据不同的时间跨度格式化聊天时间,可以按照以下步骤进行操作:
1. 获取当前时间的日期对象和小时、分钟。
```javascript
const now = new Date();
const currentYear = now.getFullYear();
const currentMonth = now.getMonth() + 1;
const currentDay = now.getDate();
const currentHour = now.getHours();
const currentMinute = now.getMinutes();
```
2. 获取消息发送时间的日期对象和小时、分钟。
```javascript
const messageTime = new Date(messageTimestamp);
const messageYear = messageTime.getFullYear();
const messageMonth = messageTime.getMonth() + 1;
const messageDay = messageTime.getDate();
const messageHour = messageTime.getHours();
const messageMinute = messageTime.getMinutes();
```
3. 计算当前时间与消息发送时间的日期差。可以使用JavaScript中的`Date`对象的`getTime()`方法,将日期对象转换为时间戳,然后计算两个时间戳之间的差值。
```javascript
const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
const daysDiff = Math.floor((now.getTime() - messageTime.getTime()) / oneDay); // 计算日期差
```
4. 根据日期差的大小,进行格式化处理。
```javascript
let formattedTime;
if (daysDiff === 0) {
formattedTime = `${messageHour < 10 ? '0' + messageHour : messageHour}:${messageMinute < 10 ? '0' + messageMinute : messageMinute}`;
} else if (daysDiff === 1) {
formattedTime = `昨天 ${messageHour < 10 ? '0' + messageHour : messageHour}:${messageMinute < 10 ? '0' + messageMinute : messageMinute}`;
} else if (daysDiff <= 7) {
const weekday = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
formattedTime = `${weekday[messageTime.getDay()]} ${messageHour < 10 ? '0' + messageHour : messageHour}:${messageMinute < 10 ? '0' + messageMinute : messageMinute}`;
} else {
formattedTime = `${messageYear}年${messageMonth}月${messageDay}日 ${messageHour < 10 ? '0' + messageHour : messageHour}:${messageMinute < 10 ? '0' + messageMinute : messageMinute}`;
}
```
请根据您的实际需求和代码架构进行适当的修改和调整。
阅读全文