Calendar no = Calendar.getInstance();

Calendar类是个抽象类,因此本身不能被实例化,然而却创建了Calendar 的对象,但并不是抽象类可以创建对象。。。。。

其实这个对象并不是Calendar 自身实例,而是其子类实例,这是在getInstance方法内部其实是实例化了一

GregorianCalendar 对象并返回了,这里还反映了一种设计模式--很多模式里都用到getInstance方法来生成一对象。。。。。

Java Calendar获取年、月、日、时间

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));    //获取东八区时间

int year = c.get(Calendar.YEAR);    //获取年
  int month = c.get(Calendar.MONTH) + 1;   //获取月份,0表示1月份
  int day = c.get(Calendar.DAY_OF_MONTH);    //获取当前天数
  int first = c.getActualMinimum(c.DAY_OF_MONTH);    //获取本月最小天数
  int last = c.getActualMaximum(c.DAY_OF_MONTH);    //获取本月最大天数
  int time = c.get(Calendar.HOUR_OF_DAY);       //获取当前小时
  int min = c.get(Calendar.MINUTE);          //获取当前分钟
  int xx = c.get(Calendar.SECOND);          //获取当前秒

SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String curDate = s.format(c.getTime());  //当前日期

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;
    }

5、计算一年中的第几星期

(1)计算某一天是一年中的第几星期

Calendar
cal=Calendar.getInstance();

cal.set(Calendar.YEAR,
2006);

cal.set(Calendar.MONTH,
8);

cal.set(Calendar.DAY_OF_MONTH,
3);

int
weekno=cal.get(Calendar.WEEK_OF_YEAR);

(2)计算一年中的第几星期是几号

SimpleDateFormat df=new
SimpleDateFormat("yyyy-MM-dd");

Calendar
cal=Calendar.getInstance();

cal.set(Calendar.YEAR,
2006);

cal.set(Calendar.WEEK_OF_YEAR,
1);

cal.set(Calendar.DAY_OF_WEEK,
Calendar.MONDAY);

System.out.println(df.format(cal.getTime()));

输出:

2006-01-02

6、add()和roll()的用法

(1) add()方法

SimpleDateFormat df=new
SimpleDateFormat("yyyy-MM-dd");

Calendar
cal=Calendar.getInstance();

cal.set(Calendar.YEAR,
2006);

cal.set(Calendar.MONTH,
8);

cal.set(Calendar.DAY_OF_MONTH,
3);

cal.add(Calendar.DATE,
-4);

Date date=cal.getTime();

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

cal.add(Calendar.DATE,
4);

date=cal.getTime();

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

输出:

2006-08-30

2006-09-03

(2)roll方法

cal.set(Calendar.YEAR,
2006);

cal.set(Calendar.MONTH,
8);

cal.set(Calendar.DAY_OF_MONTH,
3);

cal.roll(Calendar.DATE,
-4);

date=cal.getTime();

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

cal.roll(Calendar.DATE,
4);

date=cal.getTime();

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

输出:

2006-09-29

2006-09-03

可见,roll()方法在本月内循环,一般使用add()方法;

时间: 2024-10-25 06:12:19

Calendar no = Calendar.getInstance();的相关文章

Calendar.getInstance()获取当天指定点上的时间[转载]

ctoday.add(Calendar.DAY_OF_MONTH, 1); 明天时间 //获得当天0点时间public static int getTimesmorning(){Calendar cal = Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.SECOND, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.MILLISECOND, 0);r

Java.util.Calendar.getInstance()方法实例

java.util.Calendar.getInstance() 使用目前的时区和语言环境的方法得到一个日历. 声明 以下是java.util.Calendar.getInstance()方法的声明 public static Calendar getInstance() 参数 NA 返回值 该方法返回一个日历Calendar. 异常 NA 例子 下面的示例演示java.util.Calendar.getInstance()方法的用法. package com.yiibai; import ja

Java API —— Calendar类

1.Calendar类概述  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法. 2.成员方法      public static Calendar getInstance():初始化,返回子类对象 public int get(int field):返回给定日历字段的值 public void add(int field,int am

Java日期与时间的处理/Date,String,Calendar转换

public class Demo01 { //Java中Date类和Calendar简介 public static void main(String[] args) { long now=System.currentTimeMillis(); System.out.println("now= "+now); Date d1=new Date(now); System.out.println("d1= "+d1); Calendar c1=Calendar.get

java 日期操作,Date、Calendar 操作

java开发中避免不了日期相关操作,这里总结了一些常用方法~ 直接上码: package jse; import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; /**  * 常用日期操

Date、Calendar、DateFormat、SimpleDateFormat、Timer、TimerTask类

类 Date 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值. 它也允许格式化和解析日期字符串.不过,这些函数的 API 不易于实现国际化.从 JDK 1.1 开始,应 该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串. Date 中的相应方法已废弃. Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒). Date(long date) 分配 D

Java:日期类Date与Calendar

怎么获取系统系统时间,通过java? Date now= new Date(); SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSSSSS"); String nowFormate= dateFormat.format(now); System.out.println(nowFormate); 输出结果 2017-02-16 20:56:12.000000278 如何获取当前系统是星期

Calendar 对象的使用实例

1.Calendar demo例子 JavaCalendar 类时间操作,示范代码. 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 = Calend

转——JAVA中calendar,date,string 的相互转换和详细用法

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("现在时间