转自: http://www.cnblogs.com/flyme/archive/2011/06/30/2094415.html

Android 中短信的时间的显示做的很精细。首先,保存在短信数据库 mmssms.db 中的短信时间都是 Long 型的数字。当查询动作结束时,取到这个值之后,会做转换,具体转换的动作在MessageUtils.java的formatTimeStampString函数中完成。

public static String formatTimeStampString(Context context, long when) {        return formatTimeStampString(context, when, false);    }

public static String formatTimeStampString(Context context, long when, boolean fullFormat) {        Time then = new Time();        then.set(when);        Time now = new Time();        now.setToNow();        // Basic settings for formatDateTime() we want for all cases.        int format_flags = DateUtils.FORMAT_NO_NOON_MIDNIGHT |                           DateUtils.FORMAT_ABBREV_ALL |                           DateUtils.FORMAT_CAP_AMPM;        // If the message is from a different year, show the date and year.        if (then.year != now.year) {            format_flags |= DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_DATE;        } else if (then.yearDay != now.yearDay) {            // If it is from a different day than today, show only the date.            format_flags |= DateUtils.FORMAT_SHOW_DATE;        } else {            // Otherwise, if the message is from today, show the time.            format_flags |= DateUtils.FORMAT_SHOW_TIME;        }        // If the caller has asked for full details, make sure to show the date        // and time no matter what we've determined above (but still make showing        // the year only happen if it is a different year from today).        if (fullFormat) {            format_flags |= (DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME);        }        return DateUtils.formatDateTime(context, when, format_flags);    }

从第二个具体实现的函数可以看出来,Android是根据当前的时间为比较的依据来决定显示的时间格式:

1. 如果当前的短信时间中年份跟手机当前的年份不一致,则显示年月日,不显示具体的几点几分,如:2010-6-30

2. 如果短信的时间跟手机当前时间在同一年,但不是同一天,则只显示月日,如:6月29日

3.如果是当天的短信,则会计算是上午还是下午的短信,同时显示几点几分记录的该短信,如:下午 12:55

更多相关文章

  1. Android短信功能实现源码
  2. 【Android】MTK Android 修改默认日期时间
  3. Android 防短时间内重复点击
  4. Android心得4--短信
  5. Android下如何获得通话记录和短信记录
  6. android最简单的发送文本短信的demo
  7. 打印时间(MS级别)
  8. android 拨打电话与发送短信
  9. Android中短信拦截的实现

随机推荐

  1. Linux系统查看磁盘可用空间的5个命令
  2. localStorage改变背景颜色和字体大小
  3. 保留用户自定义设置
  4. 简易万年历
  5. vue 基础语法及购物车小案例
  6. 如何开始学习cg素描?动漫cg素描学习教学!
  7. android gridview 行高设置
  8. Android(安卓)Logging
  9. 2010.12.13——— android listView 滚动
  10. 2011.11.25——— android ndk 坑爹的cyg