[置顶] Android 时间、日期处理 DateUtils、SystemClock、DateFormat

时间:2022-11-12 18:21:06

老是要用到时间日期的一些处理,诸如:某段程序的时间间隔,日期时间格式化...  备注之


java中常用的 时间 日期 class:  

  java.util.Date

  java.util.Calendar

  java.text.DateFormat

  java.text.SimpleDateFormat

 还有个获取系统时间的方法 System.currentTimeMillis();


android中的:

  android.os.SystemClock
  android.text.format.DateFormat
  android.text.format.DateUtils


android.os.SystemClock 

  SystemClock.elapsedRealtime();  //系统启动后过了多长时间(毫秒值,含系统深度睡眠时间)

  所谓android深度睡眠,即屏幕关闭后,一段时间不做任何操作,不连接usb,然后在一定时间后,
  系统很多服务、进程都睡眠了,不再运行。

  SystemClock.uptimeMillis();  //系统启动后过了多长时间(毫秒值,不含系统深度睡眠时间)
  SystemClock.currentThreadTimeMillis(); //当前线程运行了多少时间(毫秒值,不含thread或systemclock.sleep的值)

  

android.text.format.DateFormat 

  DateFormat.format("yyyy-MM-dd HH:mm:ss", System.currentTimeMillis()); 

  DateFormat.format("yy/MM/dd", Calendar.getInstance());
  DateFormat.format("yyyy", new Date(2048,12,01));

  直接根据格式,格式时间   (关于格式,类中有定义)


android.text.format.DateUtils

  DateUtils.formatDateTime(getApplicationContext(), //格式化时间,最多显示到分钟。最后参数设定显示的格式
                        System.currentTimeMillis(),
                        DateUtils.FORMAT_24HOUR|DateUtils.FORMAT_SHOW_DATE|DateUtils.FORMAT_SHOW_TIME
                                |DateUtils.FORMAT_SHOW_YEAR|DateUtils.LENGTH_LONG|DateUtils.FORMAT_ABBREV_MONTH);

  DateUtils.getRelativeTimeSpanString(System.currentTimeMillis()+60*4000)); 

             //返回相对于当前时间的最大区间表示的字符串:几(分钟,小时,天,周,月,年)前/后

 DateUtils.getRelativeTimeSpanString(context, long timeMillis); 

        //返回相对于当前时间的,参数时间字符串:在同一天显示时分;在不同一天,显示月日;在不同一年,显示年月日

 DateUtils.formatDateRange(getApplicationContext(), System.currentTimeMillis(), System.currentTimeMillis() + 60 * 60 * 3000,
                        DateUtils.FORMAT_SHOW_TIME));  //返回两个时间值间的 相距 字符串