貌似感觉Date类对于其他类来说稍微会比较复杂一点,而这个复杂其实就是方法名要长一点,另外,还配合了一些子类和其他类的一些方法来搭配使用,所以相对于System类和Math类来说要稍微复杂一点,不过要学习起来其实还是比较简单的。
首先对于Date类来说,它的大体作用就是表示特定的瞬间,精确到毫秒。
Date类本身的构造方法就提供了两个,其他的都已经过时了。
Date()和Date(long date)
例如:
public class DateDemo { public static void main(String[] args) { Date date = new Date(); System.out.println(date); //显示的是一个毫秒值 } }
而相对于Date类中我们提供了一些方法来实现日期对象和毫秒值之间的转换。
例如:
/* * 日期对象和毫秒值之间的转换。 * * 毫秒值-->日期对象: * 1.通过Date对象的构造方法 new Date(timeMillis); * 2.还可以通过setTime设置。 * 因为可以通过Date对象的方法对该日期中的各个字段(年/月/日等)进行操作。 * * * 日期对象-->毫秒值: * getTime方法。 * 因为可以通过具体的数值进行运算。 */ //就上面的例子我们可以加两句 date.setTime(1405324900752l); System.out.println(date);
同样,我们实现对日期对象进行格式化那么我们使用的就是另外一个类中的方法:DateFormat类中的format方法。
那么如何来实现:将日期对象–>日期格式的字符串。
例如:
public static void Demo_2() { Date date = new Date(); DateFormat df = DateFormat.getDateInstance();//获取日期格式器。具备着默认的风格。 String str_date = df.format(date);//日期/时间字符串。显示:2014-7-16 System.out.println(str_date); //第二种 DateFormat df2 = DateFormat.getDateTimeInstance(); String str_date2 = df2.format(date);//显示2014-7-16 0:15:06 System.out.println(str_date2); //第三种 DateFormat df3 = DateFormat.getDateInstance(DateFormat.LONG);//其他风格 String str_date3 = df3.format(date);//显示2014年7月16日 System.out.println(str_date3); //第四种:如果风格是自定义的如何解决呢? DateFormat df4 = new SimpleDateFormat("yyyy年MM月dd日"); String str_date4 = df4.format(date); System.out.println(str_date4); }
同样,将日期格式的字符串–>日期对象使用的同样是DateFormat类中的parse方法。需要注意的是parse方法需要抛异常
例如:
public static void Demo_3() throws ParseException { String str_date = "2014年05月15日"; DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG); Date date = dateFormat.parse(str_date); System.out.println(date); }
OK,基本就把转换成各类的格式方法简单的简介了一遍,那么接下来给大家带来一个练习:
public static void Demo_4() throws ParseException { /* 练习: * "2013-2-14"到"2014-5-6"中间有多少天? * 思路: * 1.先将两个时间转化成毫秒值形式。 * 2.然后再对毫秒值进行加减。 * 3.将毫秒值还原成日期格式的字符串形式。 */ String a = "2013-7-16"; String b = "2014-7-16"; DateFormat dateFormat = DateFormat.getDateInstance(); //或者DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = dateFormat.parse(a); Date date2 = dateFormat.parse(b); long time1 = date1.getTime(); long time2 = date2.getTime(); long time = Math.abs(time1-time2); int day = getDay(time); System.out.println(day); } private static int getDay(long time) { int day =(int)(time/1000/3600/24); return day; }
显示结果:365
加油