Date类
构造方法:
public Date()
public Date(long date):参数 date - 自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
成员方法:
public long getTime()//返回的是自 1970 年 1 月 1 日 00:00:00 GMT 以来此日期表示的毫秒数。
public void setTime(longtime)//,设置对象,参数值是毫秒数
代码示例:
Date d = new Date();//无参构造方法,获取当前系统日期并初始化对象。
System.out.println(d);//MonApr 30 16:35:43 CST 2018
Date d1 = new Date(2000);//有参构造方法,参数值是一个long类型的数值,即自1970年1月1日起相差的毫秒数。
System.out.println(d1);//ThuJan 01 08:00:02 CST 1970(重写了toString方法,按照一定的格式进行输出)
d1.setTime(1000);//设置对象的时间点,即自1970年1月1日过了1000毫秒
System.out.println(d1);//ThuJan 01 08:00:01 CST 1970(这里的小时数是8点,是因为系统自动分辨时区,0点转换为东八区就是8点)
System.out.println(d.getTime());//1525077343545 返回的是距1970年1月1日的毫秒数。
SimpleDateFormat类
DateFormat类:public abstract class DateFormat
SimpleDateFormat类是DateFormat类的子类,DateFormat类是abstract类,不能实例化,但是这个类里面有一个format方法可以使日期格式化,想要用这个方法,就应该创建多态对象,继承并使用DateFormat类中的format方法。
构造方法:
public SimpleDateFormat()//用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
public SimpleDateFormat(String pattern)// 用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
主要方法:
public final String format(Datedate)//继承父类的方法。将一个 Date 格式化为日期/时间字符串。传入的参数是一个要格式化的日期对象。(Date--->string)
public Date parse(String source)//传入的是一个string类型的日期格式,应从其开始处进行解析,返回的是日期对象,即解析字符串得到的Date。(String---->Date)
代码示例:
DateFormat df = newSimpleDateFormat();//无参构造方法,按照默认格式进行格式化。创建多态对象,继承父类的format方法
String s = df.format(newDate());//传入Date对象,进行格式化,返回一个字符串类型的日期
System.out.println(s);//18-4-30下午4:35
DateFormat df1 = newSimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//有参构造方法,参数是自己给定的日期格式。
String s1 = df1.format(newDate());//将Date类型转为string类型
System.out.println(s1);//2018年04月30日 16:35:43 按照给定的格式进行格式化
String s2 = "1999-01-01";
DateFormat df2 = newSimpleDateFormat("yyyy-MM-dd");//给定格式,与string定义的值的格式一致。
Date d3 = df2.parse(s2);//将string类型转为Date类型。需要抛出异常。
System.out.println(d3);//FriJan 01 00:00:00 CST 1999
Calendar类
public abstract class Calendar(抽象日历类)
与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow =Calendar.getInstance();
主要方法:
public static CalendargetInstance()//使用默认时区和语言环境获得一个日历。返回的Calendar
基于当前时间,使用了默认时区和默认语言环境。返回一个日历对象。
public int get(int field)// field - 给定的日历字段。返回:给定日历字段的值。
public void add(int field,int amount)// 根据日历的规则,为给定的日历字段添加或减去指定的时间量。参数:field- 日历字段。amount- 为字段添加的日期或时间量(可正可负)。
public void set(int field,int value)//将给定的日历字段设置为给定值。
public final Date getTime()//返回一个表示此Calendar
时间值(从历元至现在的毫秒偏移量)的Date
对象。(Calendar---->Date)
public final void setTime(Date date)// 使用给定的 Date 设置此 Calendar的时间。(Date---->Calendar)
代码示例:
Calendar c =Calendar.getInstance();//通过类方法getInstance()创建对象
System.out.println(c);//java.util.GregorianCalendar[time=1525082698460,areFieldsSet=true,areAllFieldsSet=true.....
c.add(Calendar.MONTH,3);//月份往后加3个月
System.out.println(c.get(Calendar.MONTH));//6
c.add(Calendar.MONTH,-2);//月份往前倒退2个月
System.out.println(c.get(Calendar.MONTH));//4
System.out.println(c.get(Calendar.YEAR)+","+c.get(Calendar.MONTH)+","+c.get(Calendar.DAY_OF_MONTH));//2018,4,30
Date d = new Date(2000);
c.set(Calendar.MONTH,8);//设置日历的某个字段
System.out.println(c.get(Calendar.MONTH));//8 返回该字段值
c.setTime(d);//传入Date对象,返回日历(Date---->Calendar)
System.out.println(c);//java.util.GregorianCalendar[time=2000,areFieldsSet=true,areAllFieldsSet=true...
System.out.println(c.getTime());//Thu Jan 01 08:00:02 CST1970(Calendar---->Date)
练习题:
package lianxi;
import java.text.DateFormat;
import java.util.Scanner;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Lianxi5 {
public static void main(String[] args) throws ParseException {
//计算我已经来到这个世界上多少天了
DateFormat d = new SimpleDateFormat("yyyy年MM月dd日");
String birth = "1996年01月01日";
Date bir = d.parse(birth);
Date now = new Date();
int days = (int)((now.getTime()-bir.getTime())/1000/3600/24);
System.out.println("我已经来到这个世界"+days+"天了");
//获取昨天的这个时刻
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH, -1);
System.out.println(c.getTime());
//如何获得任意年份二月有多少天?
System.out.println("请输入年份:");
Scanner sc = newScanner(System.in);
int year = sc.nextInt();
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR,year);
c1.set(Calendar.MONTH, 2);//系统中的月份是从0开始,这里输入2就是系统的3月份
c1.set(Calendar.DAY_OF_MONTH, 1);//3月1日
c1.add(Calendar.DAY_OF_MONTH, -1);//3月1日往前倒退一天即2月最后一天
int days1 = c1.get(Calendar.DAY_OF_MONTH);//获取2月最后一天的天数是本月第几天
//System.out.println(days1);
System.out.println(year+"年的2月共有"+days1+"天");
}
}