标题
- Calendar类的成员方法
- 时间单位字段:
- 正确返回想要日期当天星期几?
Calendar类的成员方法
使用默认时区和区域设置获取日历。通过该方法生成Calendar对象。如下所示:Calendar cr=Calendar.getInstance();
项目 | 调用方法 |
---|---|
设置日历的年、月、日、时、分、秒 | public void set(int year,int month,int date,int hourofday,int minute,int second) |
返回给定日历字段的值。所谓字段就是年、月、日等等 | public int get(int field) |
使用给定的Date设置此日历的时间。Date------Calendar | public void setTime(Date date) |
返回一个Date表示此日历的时间。Calendar-----Date | public Date getTime() |
按照日历的规则,给指定字段添加或减少时间量。 | abstract void add(int field,int amount) |
以毫秒为单位返回该日历的时间值。 | public long getTimeInMillies() |
时间单位字段:
时间字段 | 含义 |
---|---|
YEAR | 年 |
MONTH | 月 |
DATE | 日 |
DAY_OF_MONTH | 日(跟上面一样) |
HOUR_OF_DAY 时 | 时 |
MINUTE | 分 |
SECOND/MILLISECOND | 秒/毫秒 |
DAY_OF_WEEK | 周几 |
DAY_OF_WEEK_IN_MONTH | 某月中第几周 |
YWEEK_OF_MONTH | 日历式的第几周 |
DAY_OF_YEAR | 一年的第多少天 |
WEEK_OF_YEAR | 一年的第多少周 |
AM_PM | 返回1则表示是下午,返回0表示上午 |
注意:month是从0开始的,而月份是从1开始的,所以month需要加1 | |
(所以在获取系统当前月的时候你需要得到month后加1 但是你要是掉set方法设置想要日期的时候month的值要减去1 或者得到month后不采取加1操作) | |
注意:DAY_OF_WEEK | |
//获取周几(返回1也就是我们所谓的星期天,返回7是星期六) |
import java.util.Calendar;public class Test {public static void main(String[] args) {// 其日历字段已由当前日期和时间初始化:Calendar rightNow = Calendar.getInstance(); // 子类对象rightNow.set(2021,9,16,14,33);//这里可设置想要年份的信息(注意月份减去1 此日期含义:2021年10月16日14时33分)// 获取年int year = rightNow.get(Calendar.YEAR);// 获取月int month = rightNow.get(Calendar.MONTH);// 获取日int date = rightNow.get(Calendar.DATE);//获取几点int hour = rightNow.get(Calendar.HOUR_OF_DAY);//获取几分int min = rightNow.get(Calendar.MINUTE);//获取秒数int second = rightNow.get(Calendar.SECOND);//获取上午下午int ap = rightNow.get(Calendar.AM_PM);if (ap== 1) {System.out.println("下午");}else {System.out.println("上午");}System.out.println(year + "年" + (month + 1) + "月" + date + "日" + hour + "时" + min + "分" + second + "秒");System.out.println(rightNow.get(Calendar.WEEK_OF_YEAR));//按照日历的规则,给指定字段添加或减少时间量。rightNow.add(Calendar.YEAR, 5);//往后加5年rightNow.add(Calendar.DATE, -10);//日期往前退10天int year1 = rightNow.get(Calendar.YEAR);int date1 = rightNow.get(Calendar.DATE);System.out.println(year1 + "年" + (month + 1) + "月" + date1 + "日" + hour + "时");}//返回的是周几,而不是一周的第几天(返回1也就是我们所谓的星期天,返回7是星期六)System.out.println("======"+rightNow.get(Calendar.DAY_OF_WEEK));//这个月的第几周[1-7]、[8-14]、[15-21]、[22-28]、[29-30/31] //7的倍数 System.out.println("======"+rightNow.get(Calendar.DAY_OF_WEEK_IN_MONTH));}
正确返回想要日期当天星期几?
import java.util.Calendar;public class Data {public static void main(String[] args) {Calendar now = Calendar.getInstance();//一周第一天是否为星期天//下面可以自定义日期now.set(2021,7,29);//注意月份减去1 含义 2021年8月29日boolean isFirstSunday = (now.getFirstDayOfWeek() == Calendar.SUNDAY);//获取周几int weekDay = now.get(Calendar.DAY_OF_WEEK);//若一周第一天为星期天,则-1if (isFirstSunday) {weekDay = weekDay - 1;if (weekDay == 0) {weekDay = 7;}}System.out.println(weekDay);}
}
获取当前时间的上月初上月末日期
public static void main(String[] args) {SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");//===================月初Calendar c = Calendar.getInstance();c.add(Calendar.MONTH, -1);// c.set(Calendar.MONTH, 5 - 1);//设置为1号,当前日期既为本月第一天c.set(Calendar.DAY_OF_MONTH, 1);//将小时至0c.set(Calendar.HOUR_OF_DAY, 0);//将分钟至0c.set(Calendar.MINUTE, 0);//将秒至0c.set(Calendar.SECOND, 0);//将毫秒至0c.set(Calendar.MILLISECOND, 0);String first = format0.format(c.getTime());System.out.println(first);//2022-05-01 00:00:00:000//===================月末Calendar ca = Calendar.getInstance();ca.add(Calendar.MONTH, -1);//ca.set(Calendar.MONTH, 5 - 1);ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));//将小时至23ca.set(Calendar.HOUR_OF_DAY, 23);//将分钟至59ca.set(Calendar.MINUTE, 59);//将秒至59ca.set(Calendar.SECOND, 59);//将毫秒至999ca.set(Calendar.MILLISECOND, 999);String date12 = format0.format(ca.getTime());System.out.println(date12);//2022-05-31 23:59:59:999}