android calendarview_java的calendar如何使用

Android (2) 2024-07-19 14:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
android calendarview_java的calendar如何使用,希望能够帮助你!!!。

Calendar是Android开发中需要获取时间时必不可少的一个工具类,通过这个类可以获得的时间信息还是很丰富的,下面做一个总结,以后使用的时候就不用总是去翻书或者查资料了。

在获取时间之前要先获得Calendar这个类的实例:

private Calendar c = Calendar.getInstance();

然后就可以用这个变量来获取时间了。

获得当前的年份

Log.i("MainActivityFilter", "当前的年份为:" + c.get(Calendar.YEAR));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第1张

获得当前的月份

Log.i("MainActivityFilter", "当前的月份为:" + (c.get(Calendar.MONTH) + 1));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第2张

这个要特别注意一下,月份在Calendar中是从0开始的,也就是说1月份的值为0,因此需要加1才是现实中表示的月份

获得今天是本月的第几天,有两种写法,结果是一样的

Log.i("MainActivityFilter", "DATE:" + c.get(Calendar.DATE)); Log.i("MainActivityFilter", "DAY_OF_MONTH:" + c.get(Calendar.DAY_OF_MONTH));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第3张

获得今天是本年的第几天

Log.i("MainActivityFilter", "今天是今年的第" + c.get(Calendar.DAY_OF_YEAR) + "天");

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第4张

获得今天在本月的第几周

Log.i("MainActivityFilter", "今天在本月的第" + c.get(Calendar.DAY_OF_WEEK_IN_MONTH) + "周");

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第5张

获得今天是周几,这里不能直接将返回值当做周几,而应该与Calendar用于表示周几的常量搭配使用,返回值为3不代表今天是周三

 private void printDayOfWeek() { switch (c.get(Calendar.DAY_OF_WEEK)) { case Calendar.SUNDAY: Log.i("MainActivityFilter", "今天是周日"); break; case Calendar.MONDAY: Log.i("MainActivityFilter", "今天是周一"); break; case Calendar.TUESDAY: Log.i("MainActivityFilter", "今天是周二"); break; case Calendar.WEDNESDAY: Log.i("MainActivityFilter", "今天是周三"); break; case Calendar.THURSDAY: Log.i("MainActivityFilter", "今天是周四"); break; case Calendar.FRIDAY: Log.i("MainActivityFilter", "今天是周五"); break; case Calendar.SATURDAY: Log.i("MainActivityFilter", "今天是周六"); break; default: break; } }

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第6张

获得今天是几点,12小时制

Log.i("MainActivityFilter", "现在是" + c.get(Calendar.HOUR) + "点");

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第7张

但现在其实是下午三点,所以需要区分是上午还是下午

 if (c.get(Calendar.AM_PM) == Calendar.AM) { Log.i("MainActivityFilter", "现在是上午"); } else { Log.i("MainActivityFilter", "现在是下午"); }

使用Calendar.AM和Calendar.PM来帮助判断是上午还是下午,如果c.get(Calendar.AM_PM)获取到的值和Calendar.AM相等就是上午,如果和Calendar.PM相等就是下午

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第8张

Calendar也提供了获取24小时制时间的方法

Log.i("MainActivityFilter", "现在是" + c.get(Calendar.HOUR_OF_DAY) + "点");


android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第9张

获得现在是几分

Log.i("MainActivityFilter", "现在是" + c.get(Calendar.MINUTE) + "分");

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第10张

获得现在是几秒

Log.i("MainActivityFilter", "现在是" + c.get(Calendar.SECOND) + "秒");

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第11张

获得现在是几毫秒

Log.i("MainActivityFilter", "现在是" + c.get(Calendar.MILLISECOND) + "毫秒");

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第12张

Calendar虽然不提供显示规范格式时间的方法,但是可以用SimpleDateFormat来输出规范的字符串,这里简单示范一下用法

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); Log.i("MainActivityFilter", sdf.format(c.getTime()));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第13张

关于SimpleDateFormat的更详细的用法之后会用另外一篇文章来讲

Calendar还提供了一些其它的方法,接下来关于时间的输出都是用SimpleDateFormat来输出的,就不贴输出的代码了。

增加日期中的某个域的值,比如想获得明天的日期,就需要向DAY域加1

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第14张

c.add(Calendar.DAY_OF_MONTH, 1);

加之前

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第15张

加之后

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第16张

这样对程序员就比较方便,不用去考虑各种界限的问题

比较两个日期是否相等

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第17张

private Calendar c = Calendar.getInstance(); private Calendar d = Calendar.getInstance();
Log.i("MainActivityFilter", "c和d是否相等:" + c.equals(d)); c.add(Calendar.YEAR, 1); Log.i("MainActivityFilter", "c和d是否相等:" + c.equals(d));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第18张

比较两个日期哪个更靠后一些

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第19张

private Calendar c = Calendar.getInstance(); private Calendar d = Calendar.getInstance(); private SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");

d.add(Calendar.DAY_OF_MONTH, 1); Log.i("MainActivityFilter", "d在c后面:" + d.after(c));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第20张

同样,有方法可以用来判断两个日期哪个更靠前

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第21张

Log.i("MainActivityFilter", "c在d前面:" + c.before(d));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第22张

清空某一个域并用这个域最小的值代替和清空所有的域然后全部用最小的值代替

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第23张

c.clear(Calendar.MONTH); d.clear(); Log.i("MainActivityFilter", "c:" + sdf.format(c.getTime())); Log.i("MainActivityFilter", "d:" + sdf.format(d.getTime()));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第24张

获得Calendar对象的一个深拷贝

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第25张

d = (Calendar) c.clone(); Log.i("MainActivityFilter", "c:" + sdf.format(c.getTime())); Log.i("MainActivityFilter", "d:" + sdf.format(d.getTime())); c.add(Calendar.YEAR, 1); Log.i("MainActivityFilter", "c:" + sdf.format(c.getTime())); Log.i("MainActivityFilter", "d:" + sdf.format(d.getTime()));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第26张

比较两个Calendar哪个在前哪个在后的方法

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第27张

如果调用这个方法的Calendar实例比参数给出的Calendar实例要靠前一些,返回-1,如果要靠后一些,返回1,如果相等,返回0

d = (Calendar) c.clone(); Log.i("MainActivityFilter", "比较的结果:" + c.compareTo(d)); c.add(Calendar.YEAR, 1); Log.i("MainActivityFilter", "比较的结果:" + c.compareTo(d)); d.add(Calendar.YEAR, 2); Log.i("MainActivityFilter", "比较的结果:" + c.compareTo(d));

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第28张

将当前Calendar对象转换为Date对象

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第29张

为Calendar对象的域设置值的一些方法

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第30张

还有将Date对象设置给Calendar对象的方法

android calendarview_java的calendar如何使用_https://bianchenghao6.com/blog_Android_第31张

Calendar还提供了一些关于时区,地域方面的方法,还有一些奇怪的方法,比如获取某个Calendar所处的时间是公元前还是公元后的方法。。。这些方法如果以后在实战中有运用到,再来更新这篇文章。

本篇文章中所使用到的部分代码已经上传至github,地址:https://github.com/sysukehan/AndroidTests.git,为Android Studio项目,其中的CalendarTest模块包含本文使用的代码。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

下一篇

已是最新文章

发表回复