Android 日期转换
来源:互联网 发布:水暖工程预算表软件 编辑:程序博客网 时间:2024/06/05 07:33
说说最近项目中一个特别小的细节:日期转化。比如说游客在某个时间访问了主页,需要确定这个时间是今天,还是昨天,还是其他时间来访问的。
因为觉得这个特别常用,所以就写了个小demo,可以作为一个工具类使用。注释中做了详细说明。
/** * @param time :2016-11-01 08:59:40 * @return */private String parseTime(String time) { //将当前日期转化为calendar: Calendar currentCal = Calendar.getInstance(); Date nowDate = new Date(System.currentTimeMillis()); currentCal.setTime(nowDate); //将source日期转化为calendar Calendar sourceCal = Calendar.getInstance(); SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd"); Date sourceDate = null; try { sourceDate = formate.parse(time); } catch (ParseException e) { e.printStackTrace(); } sourceCal.setTime(sourceDate); if(currentCal.get(Calendar.YEAR)==sourceCal.get(Calendar.YEAR)){ //Calendar.DAY_OF_YEAR:day number within the current year. // The first day of the year has value 1. int days = currentCal.get(Calendar.DAY_OF_YEAR)-sourceCal.get(Calendar.DAY_OF_YEAR); if(days==0){ return "今天"; } else if(days==1){ return "昨天"; }else{ return time; } }else{ return time; } }
现在来验证下日期:
private String[] timeList = {"2016-11-01 08:59:40","2016-10-31 08:59:40","2016-10-30 08:59:40"}; String time1 = parseTime(timeList[0]); String time2 = parseTime(timeList[1]); String time3 = parseTime(timeList[2]); mTv1.setText(time1); mTv2.setText(time2); mTv3.setText(time3);
用三个textview展示3个解析过的时间,展示如下,已经能正确解析了。
再补充下:
有时候需求是如QQ聊天中的时间格式显示,这里借鉴环信demo中的时间处理:
//处理时间 public static String getTimestampString(Date var0) { String var1 = null; if(isThisYear(var0)){ long var2 = var0.getTime(); if(isSameDay(var2)) { Calendar var4 = GregorianCalendar.getInstance(); var4.setTime(var0); int var5 = var4.get(Calendar.HOUR_OF_DAY); if(var5 > 17) { var1 = "晚上 hh:mm"; } else if(var5 >= 0 && var5 <= 6) { var1 = "凌晨 hh:mm"; } else if(var5 > 11 && var5 <= 17) { var1 = "下午 hh:mm"; } else { var1 = "上午 hh:mm"; } } else if(isYesterday(var2)) { var1 = "昨天 HH:mm"; } else { var1 = "M月d日 HH:mm"; } }else{ SimpleDateFormat formatter = new SimpleDateFormat( "yyyy年M月d日 HH:mm"); var1 = formatter.format(var0);//格式化数据 } return (new SimpleDateFormat(var1, Locale.CHINA)).format(var0); }//判断是否是今年 public static boolean isThisYear(Date var0){ Calendar ca=Calendar.getInstance(); ca.setTime(new Date()); int year = ca.get(Calendar.YEAR); Calendar ca1 =Calendar.getInstance(); ca1.setTime(var0); int year1 = ca1.get(Calendar.YEAR); if(year==year1){ return true; }else{ return false; } }//判断是否是同一天 private static boolean isSameDay(long var0) { TimeInfo var2 = getTodayStartAndEndTime(); return var0 > var2.getStartTime() && var0 < var2.getEndTime(); }//获取一天的开始时间和结束时间,封装到TimeInfo 类中。 public static TimeInfo getTodayStartAndEndTime() { Calendar var0 = Calendar.getInstance(); var0.set(Calendar.HOUR_OF_DAY, 0); var0.set(Calendar.MINUTE, 0); var0.set(Calendar.SECOND, 0); var0.set(Calendar.MILLISECOND, 0); Date var1 = var0.getTime(); long var2 = var1.getTime(); new SimpleDateFormat("yyyy-MM-dd HH:mm:ss S"); Calendar var5 = Calendar.getInstance(); var5.set(Calendar.HOUR_OF_DAY, 23); var5.set(Calendar.MINUTE, 59); var5.set(Calendar.SECOND, 59); var5.set(Calendar.MILLISECOND, 999); Date var6 = var5.getTime(); long var7 = var6.getTime(); TimeInfo var9 = new TimeInfo(); var9.setStartTime(var2); var9.setEndTime(var7); return var9; }public class TimeInfo { private long startTime; private long endTime; public TimeInfo() { } public long getStartTime() { return this.startTime; } public void setStartTime(long var1) { this.startTime = var1; } public long getEndTime() { return this.endTime; } public void setEndTime(long var1) { this.endTime = var1; }}
通过以上,可以将时间很细节化的处理。不同项目的需求或许又会有所不同,有需要的可以鉴于以上再做相应修改。
0 0
- Android日期格式转换
- [Android]日期转换参考
- Android 日期转换
- android 日期的各种转换
- Android SimapleDateFormat 日期格式的转换方法
- [转] android 日期时间格式转换
- Android 日期时间等转换工具类
- Android日期和时间获取和转换
- Java 、Android 时间,日历,日期转换
- 日期转换
- 日期转换
- 日期转换
- 日期转换
- 日期转换
- 日期转换
- 日期转换
- 日期转换
- 日期转换
- SpringMVC入门笔记(三)
- [Extjs modern] 如何将datepickerfield 提示的cancel和done改成中文
- [LeetCode] My Solutions in LeetCode Online Judge
- iOS - 线程(NSThread / NSOperation / GCD)
- Jquery.dataTable 分页表格
- Android 日期转换
- 设计模式六大原则
- Python访问本地Redis库的极简方式
- socket编程
- @RequestMapping 用法详解之地址映射(转)
- synchronized 方法 synchronized关键字详解
- 在centos6.5上使用oh-my-zs
- 欢迎使用CSDN-markdown编辑器
- GRE数学词汇