GregorianCalendar抽象类和Calendar使用说明

日期时间类 :
Date: 
优势:能简化的完成日期事件的格式化输出。
劣势: 
1. 如果要获取某部分。
2. 大部分方法都是不推荐的方法
总结:使用环境:如果几步获取日期时间整块内容。


如果要增强对日期时间的操作。
GregorianCalendar类p27--
java.util Class GregorianCalendar
 GregorianCalendar类中有几个很有用的构造器
   public GregorianCalendar();   //表示将当前的系统时间放入GregorianCalendar对象中
   public GregorianCalendar( 1999,11,31);  //使用一个具体的时间, 年,月,日
    大家注意: 格里高利历类中: 月是从0开始计算的,因此11实指的是12月,好在我们可以使用一些Calendar类中的内置常量来表示具体的月份
     eg:   Calendar.JANUARY  :一月   Calendar.FEBRUARY :二月…..
 public GregorianCalendar(Locale?aLocale) :根据参数指定的区域来构建GregorianCalendar对象,并在对象中包含当前的系统时间. 
 public GregorianCalendar(int?year, int?month, int?date, int?hour, int?minute)
 public GregorianCalendar(int?year, int?month, int?date, int?hour, int?minute, int?second)  
 
eg:  new GregorianCalendar(1999,Calendar.DECEMBER,31)
        new  GregorianCalendar(1999,Calendar.DECEMBER,31,23,59,59)   //同时设置时间
范例:
GregorianCalendar g=new GregorianCalendar(2009,2,19);


获取GregorianCalendar包含的部分信息P28
public int get(int field)
注意:get方法中int可以使用Calender类的常量实现。
int x=GregorianCalendar类对象.get(Calender.YEAR);  //获取年份。
Calendar.YEAR   : 返回当前的年
Calendar.MONTH   : 返回当前的月(从0开始)
Calendar.DATE   : 返回当前的天数(从1开始)
Calendar.DAY_OF_MONTH: 和Calendar.DATE一样
Calendar.HOUR  : 返回当前的小时(12小时)
Calendar.HOUR_OF_DAY   : 返回当前的小时(24小时)
Calendar.MINUTE   : 返回当前的分钟
Calendar.SECOND   : 返回当前的秒
Calendar.MILLISECOND   : 返回当前的毫秒
Calendar.WEEK_OF_MONTH   : 返回当前是本月的第几周
Calendar.YEAR   : 返回当前的年
Calendar.DAY_OF_WEEK   : 返回当前是星期几(星期天是返回1,星期一是返回2。。。星期六是返回
范例:返回的格式:2009年-11月-23日  11:59:59
package net.mypack;


import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;


import javax.swing.JOptionPane;


public class Test {
public static void main(String[] args) {
GregorianCalendar g=new GregorianCalendar(2009,10,23);
int year=g.get(Calendar.YEAR);
int month=g.get(Calendar.MONTH)+1;
int day=g.get(Calendar.DAY_OF_MONTH);
String output=year+"年"+month+"月"+day+"日";
System.out.println(output);


}
}
显示的时候,保证输出的字符串的长度,对输出的结果做格式化操作。保证每一位数据都2位。


课堂作业:
大家完成下面的程序设计程序设计
 请你制作一个类,
  1:这个类包含对当前日期的所有信息的获得—年,月,日,小时,分钟,秒,毫秒,星期数字(和上面程序一样)
  2: 要求用户可以选择是否对月,天,分钟,秒的数字进行格式化(必须保留两位),还是不格式化输出。
范例:
package net.mypack;


import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;


import javax.swing.JOptionPane;
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
public static void main(String[] args) {
GetAllDate g=new GetAllDate(false);
System.out.println(g.getYear()+g.getMonth()+g.getDay()+g.getHour());
}
}
class GetAllDate
{
private boolean isFormat;
private GregorianCalendar g;
private NumberFormat nf;
public GetAllDate(boolean i)
{
g=new GregorianCalendar();
if(i)
{
nf=NumberFormat.getIntegerInstance();
nf.setMinimumIntegerDigits(2);
nf.setMaximumIntegerDigits(2);
}
this.isFormat=i;
}
public boolean isFormat() {
return isFormat;
}
public void setFormat(boolean isFormat) {
this.isFormat = isFormat;
}
public String getYear()
{
if(isFormat)
{
return nf.format(g.get(Calendar.YEAR))+"年";
}
else
{
return g.get(Calendar.YEAR)+"年";
}
}
public String getMonth()
{
if(isFormat)
{
return nf.format(g.get(Calendar.MONTH+1))+"月";
}
else
{
return g.get(Calendar.MONTH+1)+"月";
}
}
public String getDay()
{
if(isFormat)
{
return nf.format(g.get(Calendar.DAY_OF_MONTH))+"日";
}
else
{
return g.get(Calendar.DAY_OF_MONTH)+"日";
}
}
public String getHour()
{
if(isFormat)
{
return nf.format(g.get(Calendar.HOUR))+"时";
}
else
{
return g.get(Calendar.HOUR)+"时";
}
}

}




范例:获取当前月,当前年的最大天数。 
其他实用的Calendar类常量p32
其他实用的Calendar类常量
Calendar. WEEK_OF_YEAR: 返回GregorianCalendar对象中包含的日子是对象中包含的这年的的第几周
Calendar. DAY_OF_YEAR:返回GregorianCalendar对象中包含的天数是对象中包含的这年的第几天
Calendar. DAY_OF_WEEK_IN_MONTH :返回GregorianCalendar对象中包含的日期是对象中包含的日期所在月份中的第几周


下面我们将继续介绍GregorianCalendar类中实用的实例方法
public int getActualMaximum(int?field) :得到GregorianCalendar对象中包含的日期中关于某个信息(年,月,天,小时..)的在这个日期中的最大值
其中参数Field可用前面我们介绍的Calendar的常量来替换
范例:
package net.mypack;


import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;


import javax.swing.JOptionPane;
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
public static void main(String[] args) {
        GregorianCalendar g=new GregorianCalendar();
        int max=g.getActualMaximum(Calendar.DAY_OF_MONTH);
        //int min=g.getActualMinimum(Calendar.DAY_OF_MONTH);
        max=g.getActualMaximum(Calendar.DAY_OF_YEAR);
        System.out.println(max);
}
}


范例:
package net.mypack;


import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;


import javax.swing.JOptionPane;
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
public static void main(String[] args) {
       日历 r=new 日历(2008,2);
       System.out.println(r.getMaxDay());
}
}
class 日历
{
private GregorianCalendar g;
public 日历()
{
g=new GregorianCalendar();
}
public 日历(int year,int month)
{
g=new GregorianCalendar(year,month-1,1);
}
public int getMaxDay()
{
return g.getActualMaximum(Calendar.DAY_OF_MONTH);
}
}




课堂作业:--使用类完成
1. 本月的月历P41  
2. 万年历
范例:
package net.mypack;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
public static void main(String[] args) {
CalendarTest ct=new CalendarTest(2009,3);
ct.printCalendar();
}
}
class CalendarTest
{
private GregorianCalendar g;
public CalendarTest()
{
g=new GregorianCalendar();
}
public CalendarTest(int year,int month)
{
g=new GregorianCalendar(year,month-1,1);
}
public void printCalendar()
{
int today=g.get(Calendar.DAY_OF_MONTH);
g.set(Calendar.DAY_OF_MONTH, 1);
int week=g.get(Calendar.DAY_OF_WEEK);
System.out.println("日  "+"一  "+"二  "+"三  "+"四  "+"五  "+"六  ");
for(int i=1;i<week;i++)
{
System.out.print("    ");
}
int max=g.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i=1;i<=max;i++)
{
int dayofmonth=g.get(Calendar.DAY_OF_MONTH);
if(g.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)
{
if(dayofmonth<10)
{
 System.out.println(" "+dayofmonth+"  ");
}
else
{
 System.out.println(dayofmonth+"  ");
}
}
else
{
if(dayofmonth<10)
{
 System.out.print(" "+dayofmonth+"  ");
}
else
{
 System.out.print(dayofmonth+"  ");
}
}
g.set(Calendar.DAY_OF_MONTH,dayofmonth+1 );
//g.add(Calendar.DAY_OF_MONTH, 1);
}
}
}




课后作业1:
程序设计
        设计一个类来实现两个日期时间的年份,月份,天数之差P35


课后作业2:
请你为成都市教育局设计2009学生信息录入系统。
要求:
1.为学生设计一个类来存放所有的信息,信息包括学号,姓名,年龄。。。,其中学号为学校名+唯一的数字编号(依次递增)。
2. 每个学生必须有姓名和入学时间。
3.一旦学生信息录入系统,除学号不能修改外,其他信息均可修改。
4. 显示时,以英国的日期格式显示学生的入学时间。


判断是否是闰年?


改变日期时间的内容P37




日期时间的比较P34
当我们想看今天是否比一个指定的日期大三天?P38




Date和GregorianCalendar类中数据的互导P40








课后作业:
1.请你仿照进货系统完成进货步骤。


课后选做题:
1.请你利用java类完成进销存的步骤。
要求:
1.商品自选。--(可以来自文本文件或数据库)






简易克隆P47
对象的赋予后,一个改变,另一个会怎样?
1.对象内部的变化,
2. 对象引用的变化。




关键字:  this  P50


final P56




 重载p69
方法的重载
     图形求面积的例子
构建器的重载。




课后作业:必须用类来实现。
大家利用重载实现购物的程序
要求:
如果买一束花,不管是否是会员,没有折扣,直接输出原始价格
如果购买多束花,不是会员,则在所有花的总价上打9折
如果购买多束花,是会员,则在所有花的总价上打8折




访问限制P103




继承




抽象类p41







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值