欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 仿微信聊天时间格式化显示功能

程序员文章站 2023-12-21 11:10:28
本文给大家分享android仿微信聊天时间格式化显示功能。 在同一年的显示规则: 如果是当天显示格式为 hh:mm 例:14:45 如果是昨天,显示格式为 昨天 hh...

本文给大家分享android仿微信聊天时间格式化显示功能。

在同一年的显示规则:

如果是当天显示格式为 hh:mm 例:14:45

如果是昨天,显示格式为 昨天 hh:mm 例:昨天 13:12

如果是在同一周 显示格式为 周一 hh:mm 例:周一14:05

如果不是同一周则显示格式为 m月d日 早上或者其它 hh:mm 例: 2月5日 早上10:10

不在同一年的显示规则:

显示格式为 yyyy年m月d日 晚上或者其它 hh:mm 例:2016年2月5日 晚上18:05

代码中如果有误,请留言。

代码实现如下:

import java.text.simpledateformat; 
import java.util.calendar; 
import java.util.date;
public class test {
public static void main(string[] args) {
  system.out.println("当前时间:"+new simpledateformat("yyyy/m/d hh:mm:ss").format(system.currenttimemillis()));
  system.out.println("2016/2/1 05:05:00 显示为:"+getnewchattime(1454666700000l));
  system.out.println("2017/2/1 05:05:00 显示为:"+getnewchattime(1485983100000l));
  system.out.println("2017/2/4 12:05:00 显示为:"+getnewchattime(1486181100000l));
  system.out.println("2017/2/5 10:10:00 显示为:"+getnewchattime(1486260600000l));
  system.out.println("2017/2/5 13:12:00 显示为:"+getnewchattime(1486271520000l));
  system.out.println("2017/2/6 14:05:00 显示为:"+getnewchattime(1486361100000l));
  /*运行结果:
  当前时间:2017/2/9 14:36:36
  2016/2/1 05:05:00 显示为:2016年2月5日 晚上18:05
  2017/2/1 05:05:00 显示为:2月2日 凌晨05:05
  2017/2/4 12:05:00 显示为:2月4日 中午12:05
  2017/2/5 13:12:00 显示为:2月5日 早上10:10
  2017/2/5 13:12:00 显示为:2月5日 下午13:12
  2017/2/6 14:05:00 显示为:周一14:05*/
}
/**
 * 时间戳格式转换
 */
static string daynames[] = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
public static string getnewchattime(long timesamp) {
  string result = "";
  calendar todaycalendar = calendar.getinstance(); 
  calendar othercalendar = calendar.getinstance(); 
  othercalendar.settimeinmillis(timesamp);
  string timeformat="m月d日 hh:mm";
  string yeartimeformat="yyyy年m月d日 hh:mm";
  string am_pm="";
  int hour=othercalendar.get(calendar.hour_of_day);
  if(hour>=0&&hour<6){
    am_pm="凌晨";
  }else if(hour>=6&&hour<12){
    am_pm="早上";
  }else if(hour==12){
    am_pm="中午";
  }else if(hour>12&&hour<18){
    am_pm="下午";
  }else if(hour>=18){
    am_pm="晚上";
  }
  timeformat="m月d日 "+ am_pm +"hh:mm";
  yeartimeformat="yyyy年m月d日 "+ am_pm +"hh:mm";
  boolean yeartemp = todaycalendar.get(calendar.year)==othercalendar.get(calendar.year);
  if(yeartemp){
    int todaymonth=todaycalendar.get(calendar.month);
    int othermonth=othercalendar.get(calendar.month);
    if(todaymonth==othermonth){//表示是同一个月
      int temp=todaycalendar.get(calendar.date)-othercalendar.get(calendar.date);
      switch (temp) {
      case 0:
        result = gethourandmin(timesamp);
        break;
      case 1:
        result = "昨天 " + gethourandmin(timesamp);
        break;
      case 2:
      case 3:
      case 4:
      case 5:
      case 6:
        int dayofmonth = othercalendar.get(calendar.week_of_month);
        int todayofmonth=todaycalendar.get(calendar.week_of_month);
        if(dayofmonth==todayofmonth){//表示是同一周
          int dayofweek=othercalendar.get(calendar.day_of_week);
          if(dayofweek!=1){//判断当前是不是星期日   如想显示为:周日 12:09 可去掉此判断
            result = daynames[othercalendar.get(calendar.day_of_week)-1] + gethourandmin(timesamp);
          }else{
            result = gettime(timesamp,timeformat);
          }
        }else{ 
          result = gettime(timesamp,timeformat);
        }
        break;
      default:
        result = gettime(timesamp,timeformat);
        break;
      }
    }else{
      result = gettime(timesamp,timeformat);
    }
  }else{
    result=getyeartime(timesamp,yeartimeformat);
  }
  return result;
}
/**
 * 当天的显示时间格式
 * @param time
 * @return
 */
public static string gethourandmin(long time) {
  simpledateformat format = new simpledateformat("hh:mm");
  return format.format(new date(time));
}
/**
 * 不同一周的显示时间格式
 * @param time
 * @param timeformat
 * @return
 */
public static string gettime(long time,string timeformat) {
  simpledateformat format = new simpledateformat(timeformat);
  return format.format(new date(time));
}
/**
 * 不同年的显示时间格式
 * @param time
 * @param yeartimeformat
 * @return
 */
public static string getyeartime(long time,string yeartimeformat) {
  simpledateformat format = new simpledateformat(yeartimeformat);
  return format.format(new date(time));
}
}

以上所述是小编给大家介绍的android 仿微信聊天时间格式化显示功能,希望对大家有所帮助

上一篇:

下一篇: