Android个人学习笔记之实战时间的获取相关-DateUtils

前言:在近期的项目编写过程中,看到了时间工具类DateUtil,虽然大致的用法已经清楚,但是对于这个类还是有一定的不解,很多类型并不知道实际的效果如何,所以就结合Android的API,实战来测试不同的效果,在此记录下来,以供后期查阅与分享。
引用:百度了不少的博文,但是大都没有很详细的去描述,所以在参看一定的博文的基础上又添加了一些新的内容,如果有兴趣可以查看这位博主的介绍:点击打开(http://blog.csdn.net/landehuxi/article/details/42710673

  1. API解释-点击打开
    Android.text.format
    **DateUtils:**This class contains various date-related utilities for creating text for things like elapsed time and date ranges, strings for days of the week and months, and AM/PM text etc.
    DateUtils:这个类包含了各种与日期相关的工具,用于创建诸如经过的时间和日期范围的字符串、星期和月的天数以及AM / PM文本等。
  2. 常用变量
    通过下面代码进行打印验证并得出结果,代码中打印的应该为String类型,第二个参数需要设置+“”来转换成String。
Log.e("SECOND_IN_MILLIS",DateUtils.SECOND_IN_MILLIS);
Log.e("MINUTE_IN_MILLIS",DateUtils.MINUTE_IN_MILLIS);
Log.e("HOUR_IN_MILLIS ",DateUtils.HOUR_IN_MILLIS);
Log.e("DAY_IN_MILLIS",DateUtils.DAY_IN_MILLIS);
Log.e("WEEK_IN_MILLIS ",DateUtils.WEEK_IN_MILLIS );
Log.e("YEAR_IN_MILLIS ",DateUtils.YEAR_IN_MILLIS );

这里写图片描述

【参见引用】
DateUtils.SECOND_IN_MILLIS 常量,值为”1000”,表示1秒的字符串形式
DateUtils.MINUTE_IN_MILLIS 常量,值为”60000”,表示1分钟的字符串形式
DateUtils.HOUR_IN_MILLIS 常量,值为”3600000”,表示1小时的字符串形式
DateUtils.DAY_IN_MILLIS) 常量,值为”86400000”,表示1天的字符串形式
DateUtils.WEEK_IN_MILLIS 常量,值为”604800000”,表示1星期的字符串形式
DateUtils.YEAR_IN_MILLIS 常量,值为”31449600000”,表示1年的字符串形式
日期时间获取与显示:
这里写图片描述
【参看引用】代码因为在fragment运行所以使用getActivity():

String FORMAT_ABBREV_ALL = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_ABBREV_ALL);          //1月14日
String FORMAT_ABBREV_MONTH = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_ABBREV_MONTH);        //1月14日
String FORMAT_ABBREV_RELATIVE = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_ABBREV_RELATIVE);     //1月14日
String FORMAT_ABBREV_TIME = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_ABBREV_TIME);         //1月14日
String FORMAT_ABBREV_WEEKDAY = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_ABBREV_WEEKDAY);      //1月14日
String FORMAT_NO_MIDNIGHT = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_NO_MIDNIGHT);         //1月14日
String FORMAT_NO_MONTH_DAY = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_NO_MONTH_DAY);        //一月
String FORMAT_NO_NOON = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_NO_NOON);             //1月14日
String FORMAT_NO_YEAR = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_NO_YEAR);             //1月14日
String FORMAT_NUMERIC_DATE = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_NUMERIC_DATE);        //1/14
String FORMAT_SHOW_DATE = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_DATE);           //1月14日
String FORMAT_SHOW_TIME = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_TIME);           //15:38
String FORMAT_SHOW_WEEKDAY = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_WEEKDAY);        //星期三
String FORMAT_SHOW_YEAR = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_YEAR);           //2015年1月14日

Log.e("FORMAT_ABBREV_ALL",FORMAT_ABBREV_ALL);
Log.e("FORMAT_ABBREV_MONTH",FORMAT_ABBREV_MONTH);
Log.e("FORMAT_ABBREV_RELATIVE",FORMAT_ABBREV_RELATIVE);
Log.e("FORMAT_ABBREV_TIME",FORMAT_ABBREV_TIME);
Log.e("FORMAT_ABBREV_WEEKDAY",FORMAT_ABBREV_WEEKDAY);
Log.e("FORMAT_NO_MIDNIGHT",FORMAT_NO_MIDNIGHT);
Log.e("FORMAT_NO_MONTH_DAY",FORMAT_NO_MONTH_DAY);
Log.e("FORMAT_NO_NOON",FORMAT_NO_NOON);
Log.e("FORMAT_NO_YEAR",FORMAT_NO_YEAR);
Log.e("FORMAT_NUMERIC_DATE",FORMAT_NUMERIC_DATE);
Log.e("FORMAT_SHOW_DATE",FORMAT_SHOW_DATE);
Log.e("FORMAT_SHOW_TIME",FORMAT_SHOW_TIME);
Log.e("FORMAT_SHOW_WEEKDAY",FORMAT_SHOW_WEEKDAY);
Log.e("FORMAT_SHOW_YEAR",FORMAT_SHOW_YEAR);

最终显示:
这里写图片描述

返回具体日期:
例1. 返回12月22日 下午4:50

DateUtils.formatDateTime(getActivity(),
        System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME
                | DateUtils.FORMAT_SHOW_DATE
                | DateUtils.FORMAT_ABBREV_ALL)

例2、返回 2016年12月22日星期四 17:04

System.currentTimeMillis(),DateUtils.FORMAT_24HOUR|DateUtils.FORMAT_SHOW_DATE|DateUtils.FORMAT_SHOW_TIME
        |DateUtils.FORMAT_SHOW_YEAR|DateUtils.LENGTH_LONG|DateUtils.FORMAT_ABBREV_MONTH));

如果需要返回自己需要的格式,根据上述的描述进行添加就可以了

备注:关于formatDateTime(Context context, long millis, int flags),但在int flags里面我们用到了|,也就是int的非运算。
下面看一个例子来认识这种运算:

int a = 0x01|0x00|0x10;
        System.out.println("a="+a);
        System.out.format( "%x ", a );

最后结果为a=17,11,当然第一个输出的是十进制,在我们定义的时候采用的是十六进制,非的意思也就是进行位或的运算,放到二进制里面00110000和11001100的与运算结果为11111100,也就是按位数0|1=1,1|1=1,0|0=0。
Java中的二进制表示为:

System.out.println("Java二进制7: "+Integer.toBinaryString(7));  
System.out.println("Java二进制-7:"+Integer.toBinaryString(-7));  

输出:
Java二进制7: 111
Java二进制-7: 11111111111111111111111111111001

发布了89 篇原创文章 · 获赞 28 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/iceyung/article/details/53819013