Android/java 仿微信聊天列表时间显示规则
好的,我将详细描述Android/java中仿微信聊天列表时间显示规则。
今天
当聊天记录的时间在当前日期内时,时间显示为HH:mm格式。例如,如果当前时间是2023年3月15日14点30分,那么昨天的时间显示为"昨天14:30"。
```java// 获取当前时间Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) +1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 判断是否是今天if (year == currentYear && month == currentMonth && day == currentDay) {
// 显示HH:mm格式 return String.format("%02d:%02d", hour, minute);
}
```
昨天
当聊天记录的时间在昨天日期内时,时间显示为"昨天 HH:mm"格式。例如,如果当前时间是2023年3月15日14点30分,那么昨天的时间显示为"昨天14:30"。
```java// 获取当前时间Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) +1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 判断是否是昨天if (year == currentYear && month == currentMonth && day -1 == currentDay) {
// 显示"昨天 HH:mm"格式 return String.format("昨天 %02d:%02d", hour, minute);
}
```
近7天
当聊天记录的时间在最近7天内时,时间显示为星期X HH:mm格式。例如,如果当前时间是2023年3月15日14点30分,那么3天前的时间显示为"星期三14:30"。
```java// 获取当前时间Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) +1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 判断是否在近7天内if (year == currentYear && month == currentMonth && day -7 <= currentDay) {
// 获取星期名称 String week = getWeekName(day - (day -7));
// 显示星期X HH:mm格式 return String.format("%s %02d:%02d", week, hour, minute);
}
// 获取星期名称private String getWeekName(int day) {
switch (day) {
case0:
return "星期日";
case1:
return "星期一";
case2:
return "星期二";
case3:
return "星期三";
case4:
return "星期四";
case5:
return "星期五";
case6:
return "星期六";
}
}
```
今年
当聊天记录的时间在当前年内时,时间显示为M月d日 HH:mm格式。例如,如果当前时间是2023年3月15日14点30分,那么昨天的时间显示为"3月14日14:30"。
```java// 获取当前时间Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) +1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 判断是否在今年内if (year == currentYear) {
// 显示M月d日 HH:mm格式 return String.format("%d月%d日 %02d:%02d", month, day, hour, minute);
}
```
往年
当聊天记录的时间在往年的日期内时,时间显示为yyyy年M月d日 HH:mm格式。例如,如果当前时间是2023年3月15日14点30分,那么2018年的时间显示为"2018年6月9日06:52"。
```java// 获取当前时间Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) +1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 判断是否在往年内if (year > currentYear) {
// 显示yyyy年M月d日 HH:mm格式 return String.format("%d年%d月%d日 %02d:%02d", year, month, day, hour, minute);
}
```
以上是Android/java中仿微信聊天列表时间显示规则的详细描述。