在调用时间系统时间时,会用到这两个类。
首先Date是一个具体类,可以创建对象:
Date date = new Date();
无参数对应的是系统当前时间。
如果此时在控制台输出:
System.out.println(date);
得到Sun Apr 09 12:17:02 CST 2017
但不是日常我们看到的格式。
此时要用另一个类DateFormat(抽象类)或者其子类SimpleDateFormat类(具体类)。
首先DateFormat的使用:
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
//短格式日期
然后用df.formate(date);得到一个字符串类型的值。String str = df.format(date);
输出str即为短格式日期,如:17-4-9,代表2017年4月9日。如果用DateFormat.Full或DateFormat.MEDIUM或DateFormat.LONG做参数会得到不同的时间格式。
若用SimpleDateFormat类,则可以实例化,即
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
指定时间格式
然后调用sdf.format(date);得到一个字符串,输出即可:2017-04-09 12:17:02
Date的对象有一个getTime()方法,得到的是一个long类型,查阅相关资料得出结论:在构造时调用了System.currentTimeMillis();方法,返回的是从1970年一月一日00时00分00秒到现在的毫秒数。
再说Calendar类:
Calendar类是一个抽象类,他有一个子类为GregorianCalendar
首先使用Calendar类:
Calendar calendar = Calendar.getInstance();
此时就可以调用对象calendar的get方法的到年月日时分秒等。
calendar.get(Calendar.YEAR);//年
calendar.get(Calendar.MONTH);//月
calendar.get(Calendar.HOUR_OF_DAY);//时
还有Calendar.DAY_OF_MONTH表示日,其他参数在使用联想功能即可显示,选择即可。
得到对应的值,按照自己的格式输出即可。
再说GregorianCalendar,它可以有实例对象。
GregorianCalendar gc = new GregorianCalendar();
之后调用同Calendar。
在DateForamt和SimpleDateFormat中还有parse方法,将指定格式的串输出为Date类型。
实时先来DateFormat的例子
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
String str = df.format(date);
此时的str为DateFormat.SHORT 格式,接下来调用df.parse(str);得到了一个Date类型。
比如:短格式为:17-4-9
转换之后为:Sun Apr 09 00:00:00 CST 2017,可以看到时分秒为0 ,也就是说如果你的str中没有Date的某一部分,会输出为0.
再说SimpleDateFormat类
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String str = "2017年4月9日 13时9分20秒";
sdf.parse(str);
得到Date类型。也就是parse可以将指定时间格式的串转化为Date类型。