Gear with Code Java Engineer

表示日期的类

2019-06-05

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类对象,但是字符串要满足一定的格式。


下一篇 正则表达式

Comments

Content