java中日期的表示方法修改了许多次,所以有必要学习一下现在最新的用法。主要涉及java.util.Date类、java.text.SimpleDateFormat
1 Date类
Date类的多个构造方法都被废除了,目前仅保留了两个构造方法:
public Data();
public Data(long date);
而查看Data()的源码发现:
public Date() {
this(System.currentTimeMillis());
}
它其实也是调用了 Data(long date),可以发现:Data类本质上是对long的一个封装,它表示从1970年的第一毫秒开始到现在经过了多少毫秒。看下它剩余的几个方法:
//用于比较
public boolean after(Date when);
public boolean before(Date when);
public int compareTo(Date date);
public long getTime();//返回封装的那个long
public void setTime(long time);//修改时间
public static Date from(Instant instant);//从事件中获得一个Date
public toInstant();//从此Date生成一个事件对象
可以看出,Date类中保留的方法非常少,因此它的用法也变得非常简洁。例如:如果想要修改一个Date类对象,可以先用getTime()获得它的long值,计算需要修改的毫秒数,修改此值后再setTime。这样虽然没有以前那么方便,但是逻辑上更清晰,不那么混乱。
2 SimpleDateFormat类
虽然Date类能够记录日期,但是它的toString方法并不能满足所有的需求,例如:
public class JavaDemo {
public static void main(String args[]) {
Date now = new Date();
System.out.println(now);
}
}
输出:Wed Jun 05 11:02:32 CST 2019
这是一个固定的格式,但是如果一点英文都不懂的人就看不懂了,所以可以用SimpleDateFormat类对日期进行格式化,它实际上是把一个Date转换为一个String。用法如下:
import java.text.SimpleDateFormat;
import java.util.Date;
public class JavaDemo {
public static void main(String args[]) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");//创建一个SimpleDateFormat类的对象,并设置日期格式,设置方法需要参考API文档
Date now = new Date();
System.out.println(sdf.format(now));//格式化输出
}
}
此外SimpleDateFormat类还有parse()方法,可以将字符串转换为Date类对象,但是字符串要满足一定的格式。