日期时间类 :
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
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