Date类在java.util包下,用的时候需要进行导包(Ctrl+shift+o),注意一定要与java.sql包下的Date类注意区分,这里导的是util包下的。
public Date()表示分配它的时间(精确到毫秒)。
public Date(long date):创建一个日期对象,指定毫秒值 (需要将long 时间毫秒值转换成Date对象)
常用方法:
1995-3-9
类 Date 表示特定的瞬间,精确到毫秒
构造方法:public Date()表示分配它的时间(精确到毫秒)。
public Date(long date):创建一个日期对象,指定毫秒值 (需要将long 时间毫秒值转换成Date对象)
常用方法:
public void setTime(long time):设置毫秒值
public long getTime()将Date--->long的毫秒值
public class DateDemo {
public static void main(String[] args) {
Date d = new Date() ;
System.out.println(d); //Date类型的日期格式:Sun Apr 29 11:22:47 CST 2018
//Date的文本格式: String :2018-4-29
Date dd = new Date(1000) ;
System.out.println(dd);
long time = d.getTime() ;
System.out.println(time);
d.setTime(1000);
}
}
接下来要讲一个比较重要的知识点,Date的日期格式和文本格式之间的相互转换。
日期格式:Sun Apr 29 11:22:47 CST 2018
文本格式:2018-4-29
public class DateDemo3 {
public static void main(String[] args) throws ParseException {
//Date--->String:(格式化)
//创建一个日期对象
Date d = new Date() ;
//创建SimpleDateFormat类对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//调用SimpleDateFormat里的public final String format(Date date):格式化
String str = sdf.format(d) ;
System.out.println("str:"+str);
System.out.println("----------------------");
//String:日期文本格式:---->Date:日期格式
//调用SimpleDateFormat的public Date parse(String source):解析
String strDate = "2018-6-25" ;
//创建SimpleDateFormat类对象
//SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;格式不同
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd") ;
//注意 :simpleDateFormat在解析文本格式的时候,里面 模式(规则)一定要和文本格式的模式一直,否则就出现PareseException
Date dd = sdf2.parse(strDate) ;
System.out.println("dd:"+dd);//dd:Mon Jun 25 00:00:00 CST 2018
}
}
注意:这里的SimpleDateFormat类也是需要导包的!
学习了文本格式与日期格式的相互转换,我们来试着做一个小练习,需求如下:
键盘录入你的出生年月日,算一下你来到这个世界多少天?
分析:
1)创建键盘录入对象,录入一个数据出生年月日
2)1995-xx-xx
3)将文本格式的数据解析成日期对象
4)getTime() ; 获取出生所在日期的时间毫秒值
5)获取当前系统时间毫秒值
6) 5)-4) = long time
7)换算
public class DateTest {
public static void main(String[] args) throws ParseException {
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//录入数据
System.out.println("请输入您的出生年月日:");
String str = sc.nextLine() ; //格式:yyyy-MM-dd
//创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
Date date = sdf.parse(str) ;
//获取出生年月所在的系统时间
long oldTime = date.getTime() ;
//在获取当前系统时间的毫秒值
long newTime = System.currentTimeMillis() ;
long time = newTime - oldTime ;
long day = time/1000 /60 /60 /24 ;
System.out.println("您来到世间已经有:"+day+"天");
}
}
请输入您的出生年月日:
1995-3-9
您来到世间已经有:8455天
怎么样,算完之后有没有被吓一跳,反正我是有点没有想到,时间稍纵即逝,真的是弹指一挥间,所以说我们要在有限的时间了抓紧学习,趁着年轻多努力!
继续我们的正题,既然我们现在已经学会了日期格式和文本格式的相互转换,其实有个更好的办法,那就是把转换的方法写成一个工具类封装起来,方法以后的调用,那么现在来试试吧。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 这是Date和Stirng文本格式进行相互转换的工具类
* @author Administrator
* @version v1.0
*/
public class DateUtil {
//无参构造私有化
private DateUtil() {
}
/**
* 这是一个将Date的日期格式转换成日期的文本格式
* @param format 模式
* @param d 需要被格式化的Date格式
* @return 返回的就是日期的文本格式
*/
public static String dateToString(String format,Date d) {
/*SimpleDateFormat sdf = new SimpleDateFormat(format) ;
String s = sdf.format(d) ;
return s ;*/
//一步走
return new SimpleDateFormat(format).format(d) ;
}
/**
* 这一个将字符串文本日期格式转换Date的日期格式的功能
* @param format 模式
* @param s 需要被解析的日期文本格式
* @return 返回的就Date日期格式
* @throws ParseException 解析如果出问题了,就会有这个异常
*/
public static Date stringToDate(String format,String s) throws ParseException {
return new SimpleDateFormat(format).parse(s) ;
}
}
测试类:
import java.text.ParseException;
import java.util.Date;
/**
*
*测试转换功能
*/
public class DateUtilTest {
public static void main(String[] args) throws ParseException {
Date d = new Date();
//Date---String
String s1 = DateUtil.dateToString("yyyy-MM-dd", d) ;
System.out.println("s1:"+s1);
String s2 = DateUtil.dateToString("yyyy年MM月dd日 hh:mm:ss", d) ;
System.out.println(s2);
System.out.println("----------------------");
//String---Date
String str = "2018-10-10" ;
Date dd = DateUtil.stringToDate("yyyy-MM-dd", str);
System.out.println(dd);
}
}