核心类:java.util.Date
java.text.DateFormat 用来将字符串的时间对象进行转化
java.util.Calendar 将常见的年月日等日期对象进行转化
今天主要学习这三个
Date类:
用 long 类型的变量来表示时间,精确到毫秒
获得当前的时刻的毫秒数方法如下
long now=System.currentTimeMillis();
创建date对象时会出现两种调用的情况:
Date d=new Date();
- java.sql
- java.util 这个才是正确的。
下面我们来看Date的源码:
public Date() {
this(System.currentTimeMillis());
}
说明Date调用了当前时间,因此,如果代码不输入值
public class TestDate {
public static void main(String[] args) {
Date d=new Date();
System.out.println(d);
}
}
返回:Sat Apr 25 10:47:44 CST 2020
即为当前时间。
另外一条
public Date(long date) {
fastTime = date;
}
因此可以输入值并返回相应的时间。
掌握最后一个方法:getTime()
public class TestDate {
public static void main(String[] args) {
Date d=new Date();
System.out.println(d.getTime());
}
}
返回:1587783701229,当前日期的毫秒数
DateFormat类和SimpleDateFormat类
一般使用SimpleDateFormat类。
DateFormat 来自于包 java.text.DateFormat ,源码如下:
public abstract class DateFormat extends Format {
}
表明属于抽象类,抽象类不能被new,因此创建对象时:
DateFormat df=new SimpleDateFormat(??);
?号处需要填入对象,我们引进格式化字符的含义,如下图所示:
public final StringBuffer format(Object obj, StringBuffer toAppendTo,FieldPosition fieldPosition)
{
if (obj instanceof Date)
return format( (Date)obj, toAppendTo, fieldPosition );
else if (obj instanceof Number)
return format( new Date(((Number)obj).longValue()),toAppendTo, fieldPosition );
else
throw new IllegalArgumentException("Cannot format given Object as a Date");
}
格式化
public Date parse(String source) throws ParseException
{
ParsePosition pos = new ParsePosition(0);
Date result = parse(source, pos);
if (pos.index == 0)
throw new ParseException("Unparseable date: \"" + source + "\"" ,pos.errorIndex);
return result;
}
上面代码parse的作用为把字符串解析为时间
以及
public abstract StringBuffer format(Date date, StringBuffer toAppendTo,FieldPosition fieldPosition);
把时间转换为字符串
最常见的格式化字符串语句如下所示:
public class TestDateFormat {
public static void main(String[] args) {
//把时间对象按照“格式字符串指定的格式”转成相应的字符串“
DateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String str=df.format(new Date(4000000));
System.out.println(str);
}
}
输出结果:1970-01-01 09:06:40
相应的:
public class TestDateFormat {
public static void main(String[] args) throws ParseException {
//把字符串按照“格式字符串指定的格式”,转成相应的时间对象
DateFormat df2=new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
Date date=df2.parse("1983年5月10日 10时45分59秒");
System.out.println(date);
}
}
输出结果为:Tue May 10 10:45:59 CST 1983
当然,也可以测试其他字符格式,如今天是今年的多少天
public class TestDateFormat {
public static void main(String[] args){
DateFormat df3=new SimpleDateFormat("D");
String str3=df3.format(new Date());
System.out.println(str3);
}
}
输出结果:116 表示今天是今年的116天,阔怕!