JAVA API之Calendar详解

转载 2013年12月05日 10:55:38

Calendar:中文的翻译就是日历

实例化Calendar

Calendar calendar = Calendar.getInstance();

Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。

 

Calendar 与 Date 的转换非常简单:

Calendar calendar = Calendar.getInstance();
// 从一个 Calendar 对象中获取 Date 对象
Date date = calendar.getTime();
// 将 Date 对象反应到一个 Calendar 对象中,
// Calendar/GregorianCalendar 没有构造函数可以接受 Date 对象
// 所以我们必需先获得一个实例,然后设置 Date 对象
calendar.setTime(date);

 

Calendar 对象在使用时,有一些值得注意的事项:

1. Calendar 的 set() 方法

set(int field, int value) - 是用来设置"年/月/日/小时/分钟/秒/微秒"等值

field 的定义在 Calendar 中

set(int year, int month, int day, int hour, int minute, int second) 但没有

set(int year, int month, int day, int hour, int minute, int second, int millisecond) 前面 set(int,int,int,int,int,int) 方法不会自动将 MilliSecond 清为 0。

另外,月份的起始值为0而不是1,所以要设置八月时,我们用7而不是8。

calendar.set(Calendar.MONTH, 7);
获取当前的时间
 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());  //当前日期
  System.out.println("当前时间:"+year + "-" + month + "-"+ day + " "+time + ":" + min +":" + xx);
  System.out.println("第一天和最后天:" + first +"," + last);

  System.out.println("当前日期curDate====:" + curDate); 

输出结果:

当前时间:2012-9-25 22:50:54
第一天和最后天:1,30

当前日期curDate:2012-09-25 22:50:54
Calendar的计算

  c.add(Calendar.YEAR, 1);
  c.add(Calendar.MONTH, 1);
  c.add(Calendar.DAY_OF_MONTH, 1);
  int year2 = c.get(Calendar.YEAR);
  int month2 = c.get(Calendar.MONTH) + 1;
  int day2 = c.get(Calendar.DAY_OF_MONTH);
  int firstD = c.getActualMinimum(c.DAY_OF_MONTH);
  int lastD = c.getActualMaximum(c.DAY_OF_MONTH);
  System.out.println("当前时间:"+year2 + "-" + month2 + "-"+ day2 + " "+time + ":" + min +":" + xx);
  System.out.println("第一天和最后天:" + firstD +"," + lastD);

 

输出结果:

当前时间:2013-10-26 23:4:3
第一天和最后天:1,31

获取上个月的年、月、日

Calendar c=Calendar.getInstance();

c.add(Calendar.MONTH, -1);//上个月

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

String year=String.valueOf(c.get(Calendar.YEAR));

String topDay = String.valueOf(c.getActualMinimum(Calendar.DAY_OF_MONTH));

String lastDay = String.valueOf(c.getActualMaximum(Calendar.DAY_OF_MONTH)); 

//上个月

String lastMonth=String.valueOf(c.get(Calendar.MONTH)+1).length()==2?String.valueOf(c.get(Calendar.MONTH)+1):"0"+String.valueOf(c.get(Calendar.MONTH)+1);
String topDayMonth=year+"-"+lastMonth+"-"+"01" + " 00:00:00";
String lastDayMonth = year+"-"+lastMonth+"-"+lastDay+ " 23:59:59";
System.out.println("###year:" + year);
System.out.println("###last month:" + lastMonth);
System.out.println("###topday:" + topDayMonth);
System.out.println("###lastday:" + lastDayMonth);


输出结果

###year:2013

###last month:04

###topday:2013-04-01 00:00:00

###lastday:2013-04-30 23:59:59
 

 
 
Date类介绍

Data和Calendar类:
一、创建一个日期对象r

让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简
单例子. 这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间.
import java.util.Date;

public class DateExample1 {
public static void main(String[] args) {
// Get the system date/time
Date date = new Date();

System.out.println(date.getTime());
}
}



 



 

 

java基础-API-System、Runtime、Date、Calendar、Math

------- android培训、java培训、期待与您交流! ---------- 一、System类 1、概述     System是描述系统一些信息的类,类中的属性和方法都是静态的。不能...

AdaultBird--我的黑马程序员之路!Chapter5---java API中的System类,Properties类,Runtime类,Date类,Calendar类,Math类,IO概述及

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------   2015年8月31日,今天学习的内容有:java API中的System类,Propert...

java--jdk api中其他对象(System,Runtime,Calendar,Math,Random,Date)

01-其他对象(System) SystemDemo java.lang 1 System:类中的方法和属性都是静态的     out :标准输出流,默认是控制台     in : 标准输入流,默...

JAVA Calendar,Date类详解

  • 2011年03月03日 18:09
  • 44KB
  • 下载

关于java基础--日期类与日历类Calendar详解测试

1,Date Date d = new Date(); //创建日期比当前延迟100毫秒后的日期 Date d1 = new Date(System.currentTimeMillis()+1...
  • yzjyhp
  • yzjyhp
  • 2015年07月22日 21:19
  • 301

java 时间的处理类Date与Calendar-详解

Java 关于时间日期的处理有两个基础类 Calendar 和 Date 。 Calendar 有子类 GregorianCalendar ; Date 有子类 (java.sql.) Date,...

java Calendar详解

(在文章的最后,将会介绍Date类,如果有兴趣,可以直接翻到最后去阅读)究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历、阴(农)历之分。它们的区别在...

Java Calendar 基础详解实例

Java Calendar 类时间操作,这也许是创建日历和管理最简单的一个方案,示范代码很简单。 演示了获取时间,日期时间的累加和累减,以及比较。 注意事项: Calen...

Java日期类Calendar详解

Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date());     int year   = calendar....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA API之Calendar详解
举报原因:
原因补充:

(最多只允许输入30个字)