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

Java代码
  1. publicstaticStringformatTimeStampString(Contextcontext,longwhen){
  2. returnformatTimeStampString(context,when,false);
  3. }

Java代码
  1. publicstaticStringformatTimeStampString(Contextcontext,longwhen,booleanfullFormat){
  2. Timethen=newTime();
  3. then.set(when);
  4. Timenow=newTime();
  5. now.setToNow();
  6. //BasicsettingsforformatDateTime()wewantforallcases.
  7. intformat_flags=DateUtils.FORMAT_NO_NOON_MIDNIGHT|
  8. DateUtils.FORMAT_ABBREV_ALL|
  9. DateUtils.FORMAT_CAP_AMPM;
  10. //Ifthemessageisfromadifferentyear,showthedateandyear.
  11. if(then.year!=now.year){
  12. format_flags|=DateUtils.FORMAT_SHOW_YEAR|DateUtils.FORMAT_SHOW_DATE;
  13. }elseif(then.yearDay!=now.yearDay){
  14. //Ifitisfromadifferentdaythantoday,showonlythedate.
  15. format_flags|=DateUtils.FORMAT_SHOW_DATE;
  16. }else{
  17. //Otherwise,ifthemessageisfromtoday,showthetime.
  18. format_flags|=DateUtils.FORMAT_SHOW_TIME;
  19. }
  20. //Ifthecallerhasaskedforfulldetails,makesuretoshowthedate
  21. //andtimenomatterwhatwe'vedeterminedabove(butstillmakeshowing
  22. //theyearonlyhappenifitisadifferentyearfromtoday).
  23. if(fullFormat){
  24. format_flags|=(DateUtils.FORMAT_SHOW_DATE|DateUtils.FORMAT_SHOW_TIME);
  25. }
  26. returnDateUtils.formatDateTime(context,when,format_flags);
  27. }

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

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

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

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

更多相关文章

  1. Android接入免费的短信验证SMSSDK的应用
  2. Android性能优化案例研究(上)
  3. Android快捷便利但不常被使用的原生工具类
  4. Android性能分析工具Systrace和TraceView的使用
  5. mono for android 第四课--提示框
  6. Android学习笔记17:中级视图组件DatePicker和TimePicker
  7. 转载:Android中如何修改系统时间(应用程序获得系统权限)
  8. Android(安卓)Notification 基础
  9. 【Android开发学习03】短时间的音效播放实现SoundPool

随机推荐

  1. pdb clone mos文档
  2. 在vim中设置tab缩进为4个字符
  3. python入门教程13-04 (语法入门之记录相关
  4. 用查找替换命令删除文件中行首的空白字符
  5. golang语言学习之数据类型
  6. 软链接与硬链接的区别
  7. 自学C语言的第一天
  8. 文件的元数据信息查看及修改文件时间戳信
  9. 远程克隆PDB
  10. 91.mysql主从配置自动部署