javacalendar,Java calendar用法

发布时间:2022-11-21

本文目录一览:

  1. Java中中关于Calendar类的几点注意事项
  2. Java中日历类(CalendarClass)的用途?
  3. java 中Calendar.getInstance() 实现的是什么?
  4. java中的Calendar如何使用?
  5. java Calendar设置日期

Java中中关于Calendar类的几点注意事项

在使用Java的Calendar类会遇到的几个问题,这里整理一下,供参考 在获取月份时,Calendar.MONTH + 1 的原因 Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,所以月份为JANUARY在Java中返回“0”,依次类推也就是在取Calendar.MONTH的值时我们需要+1。 2. 在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因 Java中Calendar.DAY_OF_WEEK其实表示:一周中的第几天,所以他会受到 第一天是星期几 的影响。 有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,这2种情况是需要区分的。 看下表的返回值 所以Calendar.DAY_OF_WEEK需要根据本地化设置的不同而确定是否需要 “-1” Java中设置不同地区的输出可以使用 Locale.setDefault(Locale.地区名) 来实现。 3. 获取日期时 Calendar.DAY_OF_MONTH 不需要特殊的操作,他直接返回一个月中的第几天

Java中日历类(CalendarClass)的用途?

Java中日历类(Calendar类)的用途如下: Calendar类的静态方法getInstance()可以初始化一个日历对象:

Calendar now = Calendar.getInstance();

可以使用下面三个方法把日历定到任何一个时间:

set(int year, int month, int date);
set(int year, int month, int date, int hour, int minute);
set(int year, int month, int date, int hour, int minute, int second);

如果想获得年份、月份、小时等信息可以使用:

now.get(Calendar.MONTH); // 这样的方法,0表示一月,1表示二月
get(Calendar.DAY_OF_MONTH); // 获得这个月的第几天
get(Calendar.DAY_OF_WEEK); // 获得这个星期的第几天
get(Calendar.DAY_OF_YEAR); // 获得这个年的第几天
getTimeMillis(); // 获得当前时间的毫秒表示
  1. 计算某一月份的最大天数
Calendar time = Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR, year);
time.set(Calendar.MONTH, i-1); // 注意,Calendar对象默认一月为0
int day = time.getActualMaximum(Calendar.DAY_OF_MONTH); // 本月份的天数

注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间 2. Calendar和Date的转化 (1) Calendar转化为Date

Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

(2) Date转化为Calendar

Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
  1. 格式化输出日期时间
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(df.format(date));
  1. 计算相隔天数的方法
public int getDaysBetween(Calendar d1, Calendar d2) {
    if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end
        java.util.Calendar swap = d1;
        d1 = d2;
        d2 = swap;
    }
    int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
    int y2 = d2.get(Calendar.YEAR);
    if (d1.get(Calendar.YEAR) != y2) {
        d1 = (Calendar) d1.clone();
        do {
            days += d1.getActualMaximum(Calendar.DAY_OF_YEAR); // 得到当年的实际天数
            d1.add(Calendar.YEAR, 1);
        } while (d1.get(Calendar.YEAR) != y2);
    }
    return days;
}

java 中Calendar.getInstance() 实现的是什么?

java中calendar.getInstance()new Date()的差别如下:

  • calendar.getInstance()是获取一个calendar对象并可以进行时间的计算,时区的指定
  • new Date()是创建了一个date对象,默认是UTC格式的。 二者可以相互转化: 从一个calendar对象中获取date对象:
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();

将date对象反应到一个calendar对象中:

Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

java中的Calendar如何使用?

package pack.java.calendar.demo;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class CalendarDemo {
    private static SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    public static void main(String[] args) {
        // 获取calendar实例
        Calendar calendar = Calendar.getInstance();
        // 判断calendar是不是GregorianCalendar类的实例
        if(calendar instanceof GregorianCalendar){
            System.out.println("属于GregorianCalendar类的实例!");
        }
        // 从calendar对象中获得date对象,当前时间
        Date dates = calendar.getTime();
        // 格式化时间
        String date_str = date_format.format(dates);
        System.out.println(date_str);
        // 设置月份05;代表日历的月份6月,因为月份从0开始
        calendar.set(Calendar.MONTH, 05);
        int months = calendar.get(Calendar.MONTH);
        System.out.println(months); // 输出05
        // 设置日期为2011-07-24 09:59:50
        calendar.set(2011, 06, 24, 9, 59, 50);
        String getDate = date_format.format(calendar.getTime());
        System.out.println(getDate); // 输出2011-07-24 09:59:50
        // 比较日期大小
        if(new Date().getTime() > calendar.getTimeInMillis()){
            System.out.println("当前日期在后!");
        } else {
            System.out.println("当前日期在前!");
        }
        // 设置当前时间为:2011-07-24 11:06:00
        calendar.setTime(new Date());
        int year = calendar.get(Calendar.YEAR); // 获取年
        int month = calendar.get(Calendar.MONTH); // 获取月
        int date = calendar.get(Calendar.DATE); // 获取天
        int hour = calendar.get(Calendar.HOUR); // 获取小时
        int minute = calendar.get(Calendar.MINUTE); // 获取分钟
        int second = calendar.get(Calendar.SECOND); // 获取秒钟
        int hour_of_day = calendar.get(Calendar.HOUR_OF_DAY); // 第几个小时
        int day_of_month = calendar.get(Calendar.DAY_OF_MONTH); // 这天,在一个月内是第几天
        int day_of_week = calendar.get(Calendar.DAY_OF_WEEK); // 这天,在一周内,是第几天
        int day_of_year = calendar.get(Calendar.DAY_OF_YEAR); // 这天,在一年内,是第几天
        int week_of_year = calendar.get(Calendar.WEEK_OF_YEAR); // 这周,在一年内,是第几周
        int week_of_month = calendar.get(Calendar.WEEK_OF_MONTH); // 这周,在这个月是第几周;以星期为标准
        int zone_offset = calendar.get(Calendar.ZONE_OFFSET); // 获取时区
        int day_of_week_in_month = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH); // 某月中第几周,按这个月1号算,1号起就是第1周,8号起就是第2周。以月份天数为标准
        int r = calendar.get(Calendar.AM_PM);
        if(r == calendar.AM){
            System.out.println("现在是上午");
        }
        if(r == calendar.PM){
            System.out.println("现在是下午");
        }
        System.out.println("==================================================");
        System.out.println(year);
        System.out.println(month);
        System.out.println(date);
        System.out.println(hour);
        System.out.println(minute);
        System.out.println(second);
        System.out.println(hour_of_day);
        System.out.println(day_of_month);
        System.out.println(day_of_week);
        System.out.println(day_of_year);
        System.out.println(week_of_year);
        System.out.println(week_of_month);
        System.out.println(zone_offset);
        System.out.println(day_of_week_in_month);
    }
}

java Calendar设置日期

int m1 = c.get(Calendar.MONTH);

设置的地方,和取出来的地方,都没有考虑+1,所以结果还是7。