您的位置:

javacalendar,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);

    3.格式化输出日期时间

    Date date=new Date();

    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    System.out.println(df.format(date));

4.计算相隔天数的方法

    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

calendar

=

calendar.getinstance();

//

从一个

calendar

对象中获取

date

对象

date

date

=

calendar.gettime();

//

date

对象反应到一个

calendar

对象中,

//

calendar/gregoriancalendar

没有构造函数可以接受

date

对象

//

所以我们必需先获得一个实例,然后设置

date

对象

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。