Data 类
类Date表示特定的瞬间,精确到毫秒
构造方法:
Date() //根据当前的默认毫秒值创建日期对象
Date(long date) //根据给定的毫秒值创建日期对象
范例:
package cn.itcast_01;
import java.util.Date;
public class DataDemo {
public static void main(String[] args) {
//创建对象
Date d = new Date();
System.out.println(d);
//创建对象
long time = 1000*60*60;
Date d2 = new Date(time);
System.out.println("d2:"+d2);
}
}
成员方法:
public long getTime() //以毫秒为单位获取时间
public void setTime(long time) //设置时间
掌握两个:
从Date得到一个毫秒值
——| 用 getTime()
把一个毫秒值转为Date
——|构造方法
——|setTime(long time)
范例:
package cn.itcast_02;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
//创建对象
Date d1 = new Date();
//public long getTime() //以毫秒为单位获取时间
System.out.println(d1.getTime());
}
}
______________________________________
DateFormat
可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat
SimpleDateFormat的构造方法:
SimpleDateFormat() //默认格式
SimpleDateFormat(String pattern) //给定模式
年 y
月 M
日 d
时 H
分 m
秒 s
例如:2016年12月12日 12:12:12
* Date----->String(格式化)
所用方法:public final String format(Date date)
*
* String------>Date(解析)
所用方法:public Date parse(String source)
范例:
package cn.itcast_03;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* DateFormat
*
* Date----->String(格式化)
*
* String------>Date(解析)
*
*/
public class DateFormat {
public static void main(String[] args) throws ParseException {
//Date----->String
//创建日期对象
Date d = new Date();
//创建格式化对象
//SimpleDateFormat sdf = new SimpleDateFormat();格式化方法
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //返回结果:2017年02月07日 20:39:53
//格式化方法public final String format(Date date)
String s = sdf.format(d);
System.out.println(s);
//String----->Date
String str = "2008-08-08 12:12:12";
//在吧一个字符串解析为日期的时候,注意格式一致
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//public Date parse(String source) 解析方法
Date dd = sdf2.parse(str);
System.out.println(dd); //Fri Aug 08 12:12:12 CST 2008
}
}
练习01:计算你来到这个世界多少天了?
package cn.itcast_05;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*
* 算一下你来这个世界多少天了
* 思路:
* A/把你出生的年月日键盘录入
* B/把该字符串转换为一个日期
* C/ 通过该日期得到一个毫秒值
* D/获取当前时间的毫秒值
* E/用D-C得到一个毫秒值
* F/用E的毫秒值转换为天 /1000/60/60/24
*
*/
public class DateTest_01 {
public static void main(String[] args) throws ParseException {
//键盘录入出生年月日
Scanner sc = new Scanner(System.in);
System.out.println("请输入出生年月日 yyyy-MM-dd:");
String y = sc.nextLine();
//把该字符串转换为一个日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date oldD = sdf.parse(y);
//通过该日期得到一个毫秒值
long oldTime = oldD.getTime();
//获取当前时间的毫秒值
Date nowD = new Date();
long nowTime = nowD.getTime();
//用nowD-oldD
long time = nowTime-oldTime;
//换算天数:
int day =(int)( time /1000/60/60/24);
//输出:
System.out.println("已经活了:"+day+"天!");
}
}
————————————————————————————————
Calendar类
Calendar是一个抽象类。它为特定瞬间与一组诸如 YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等 日历字段
之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
public int get(int field) 返回给定日历字段的值
成员方法:
public static Calendar getInstance() //获取当前日历时间
public int get(int field)
public void add(int field, int amount) //为给定的日历字段添加或减去指定的时间量。
public final void set(int year,int month,int date) //设置当前日历的年月日
范例01:
package cn.itcast_01;
import java.util.Calendar;
/*
* Calendar
*/
public class CalendarDemo {
public static void main(String[] args) {
Calendar rightNow = Calendar.getInstance(); //左边是抽象类,右边是他的子类对象(多态)//获取当前日历时间
//获取年
int year = rightNow.get(Calendar.YEAR);
//获取月
int month = rightNow.get(Calendar.MONTH);
//获取日
int day = rightNow.get(Calendar.DATE);
System.out.println(year+"年"+(month+1)+"月"+day+"日");
}
}
范例02
package cn.itcast_02;
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
//获取当前的日历时间
Calendar rightNow = Calendar.getInstance();
//获取年月日
int year = rightNow.get(Calendar.YEAR);
int month = rightNow.get(Calendar.MONTH);
int date = rightNow.get(Calendar.DATE);
System.out.println(year+"年"+(month+1)+"月"+date+"日");
//获取三年前的时间
rightNow.add(Calendar.YEAR, -3);
int year1 = rightNow.get(Calendar.YEAR);
int month1 = rightNow.get(Calendar.MONTH);
int date1 = rightNow.get(Calendar.DATE);
System.out.println(year1+"年"+(month1+1)+"月"+date1+"日");
//5年后10天前
rightNow.add(Calendar.YEAR, 5);
rightNow.add(Calendar.DATE, -10);
int year2 = rightNow.get(Calendar.YEAR);
int month2 = rightNow.get(Calendar.MONTH);
int date2 = rightNow.get(Calendar.DATE);
System.out.println(year2+"年"+(month2+1)+"月"+date2+"日");
//public final void set(int year,int month,int date) //设置当前日历的年月日
rightNow.set(2011, 11, 11);
int year3 = rightNow.get(Calendar.YEAR);
int month3 = rightNow.get(Calendar.MONTH);
int date3 = rightNow.get(Calendar.DATE);
System.out.println(year3+"年"+(month3+1)+"月"+date3+"日");
}
}
练习01:获取任意一年二月份有多少天?
package cn.itcast_03;
import java.util.Calendar;
import java.util.Scanner;
/*
* 获取任意一年二月份的多少天
* 思路:
* A/ 键盘录入任意年份
* B/ 设置日历对象的年月日
* 年就是A输入的数据
* 月是2 (三月)
* 日是1
* C/把时间往前推一天就是二月的最后一天
* D/输出这天即可
*/
public class CalendarTest_01 {
public static void main(String[] args) {
//键盘录入任意年份
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
//设置日历对象的年月日
Calendar time = Calendar.getInstance(); //创建日历对象
time.set(year,2, 1); //年就是键盘输入,月份从0开始计算,所以2是3月,这是3月1日
time.add(Calendar.DATE, -1); //减少1天就是二月最后一天
int date = time.get(Calendar.DATE); //获得二月最后一天的日期
System.out.println(year+"年的二月有"+date+"天");
}
}