一、Calendar的使用
Calendar 该控件可以获得日期和时间,可以获取当前的,也可以根据当前日期加减年月日时分秒。
比如想做一个类似这样的东西,只使用Calendar 就够了。
1:获取年、月、日、周、时、分、秒
private Calendar calendar;//定义一个全局的private int year;//年private int month; //月private int day; //日calendar= Calendar.getInstance(); // 然后获得该类的实列year=calendar.get(Calendar.YEAR); //获取当前年份赋值给yearLog.e(TAG,"当前年份:"+calendar.get(Calendar.YEAR));month=calendar.get(Calendar.MONTH); //获取当前月份赋值给month,月份坐标是从0开始的0~11,真实月份要在该基础上+1;Log.e(TAG,"当前月份"+(calendar.get(Calendar.MONDAY)+1) );day=calendar.get(Calendar.DAY_OF_MONTH); //获取当前日期赋值给dayLog.e(TAG,"本月的第几天:"+calendar.get(Calendar.DAY_OF_MONTH));//也可以获取第几周Log.e(TAG,"在本月的第几周"+calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));Log.e(TAG,"周几:"+calendar.get(Calendar.DAY_OF_WEEK)); Log.e(TAG,"在本年的第几周:"+calendar.get(Calendar.WEEK_OF_YEAR));
//这个时候我发现一个明显错误和英文字面上意思不一样,返回的数字和周几不一样,今天周一返回的却是2,点开源码看一下
/*** Value of the {@link #DAY_OF_WEEK} field indicating* Sunday.*/public final static int SUNDAY = 1;/*** Value of the {@link #DAY_OF_WEEK} field indicating* Monday.*/public final static int MONDAY = 2;/*** Value of the {@link #DAY_OF_WEEK} field indicating* Tuesday.*/public final static int TUESDAY = 3;/*** Value of the {@link #DAY_OF_WEEK} field indicating* Wednesday.*/public final static int WEDNESDAY = 4;/*** Value of the {@link #DAY_OF_WEEK} field indicating* Thursday.*/public final static int THURSDAY = 5;/*** Value of the {@link #DAY_OF_WEEK} field indicating* Friday.*/public final static int FRIDAY = 6;/*** Value of the {@link #DAY_OF_WEEK} field indicating* Saturday.*/public final static int SATURDAY = 7;
//发现返回1表示周日、返回2表示周一以此类推,返回7表示周六
//也可以获取时、分、秒
Log.e(TAG,"获取时,24小时制:"+calendar.get(Calendar.HOUR_OF_DAY));Log.e(TAG,"获取时,12小时制:"+calendar.get(Calendar.HOUR));Log.e(TAG,"获取分:"+calendar.get(Calendar.MINUTE));Log.e(TAG,"获取秒:"+calendar.get(Calendar.SECOND));Log.e(TAG,"获取毫秒:"+calendar.get(Calendar.MILLISECOND));Log.e(TAG,"获取完整日期和时间:"+calendar.getTime());
2: calendar.add( );的使用
目前只能获取当前日期,做成上图效果还不够,需要在日历年月日的基础上加减,该类这个方法可以实现calendar.add(Calendar.YEAR,-1); //该日历指向的年份减1,如果需要加1就把方法的第二个参数改为1,该方法不限于1,也可以加减5、6、2等等。year=calendar.get(Calendar.YEAR); //获取当前年份赋值给year,此时输出year是已经减1年的日期Log.e(TAG,"当前年份:"+calendar.get(Calendar.YEAR));//打印一下日历指向年份,发现是去年的calendar.add(Calendar.MONTH,1); //该日历指向的月份加1month=calendar.get(Calendar.MONTH); //获取当前月份赋值给month,以供输出最新月份Log.e(TAG,"当前月份"+(calendar.get(Calendar.MONDAY)+1) ); //该加1是因为月份是0~11,不是1~12,真实月份要在获取月份上+1;calendar.add(Calendar.DAY_OF_YEAR,1); //日加1day=calendar.get(Calendar.DAY_OF_MONTH); //获取当前日期赋值给day,以供输出最新日期Log.e(TAG,"当前月份"+(calendar.get(Calendar.DAY_OF_MONTH)) ); //打印当前日期
二、格式化时间 SimpleDateFormat的简单使用 , SimpleDateFormat //该类可以格式化时间,在返回有关日期经常使用
Date date = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy--MM--dd HH:mm:ss");Log.e("格式化时间",simpleDateFormat.format(date));
三、DatePicker日期选择器(先留着以后写)
/Bigkoo/Android-PickerView //三方控件
implementation ‘com.squareup:android-times-square:1.6.5@aar’ //三方控件