Osheep

时光不回头,当下最重要。

Java日期处理类

导语

最重要的就是使用SimpleDateFormat类进行日期格式的转换。

主要内容

  • Date类的使用
  • SimpleDateFormat类的使用
  • Calendar类的使用

具体内容

Date类

在之前一直在编写简单Java类,但是所编写的数据表与简单Java类的转换里面缺少了Date数据类型,所以本部分就属于简单Java类的最后的拼版。

在Java里面提供有一个java.util.Date的类,它直接就表示当前的日期时间。

范例:取得当前的日期时间

import java.util.Date;

public class TestDemo {
    public static void main(String args[]) {
        Date date = new Date();
        System.out.println(date);  // 输出对象信息
    }
}

输出结果

Sat Sep 30 22:26:23 CST 2017

这个时候的确输出了当前的日期时间,只不过这个格式实在是难看。
一直以来强调过一个概念:long可以描述出日期时间数据,那么这一点在Date类的方法上也是可以看见的,在Date类里面定义了如下的几个重要方法:

  • 无参构造:public Date()。
  • 有参构造:public Date(long date)。
  • 转换为long型:public long getTime()。

范例:Date与long之间转换

public class TestDemo {
    public static void main(String args[]) {
        long cur = System.currentTimeMillis();
        Date date  = new Date(cur);
        System.out.println(date);
        System.out.println(date.getTime);
    }
}

输出结果

Sat Sep 30 22:36:23 CST 2017
1506782205

以后的代码编写过程之中,依然需要以上的转换操作,尤其是getTime()方法。

日期格式化:SimpleDateFormat

java.text是一个专门实现国际化程序的开发包,而SimpleDateFormat是一个专门处理格式化日期的工具类,可以将Date型的对象转换为String型的形式显示。而主要使用的是以下方法:

  • 构造方法:public SimpleDateFormat(String pattem),需要传递转换格式。
  • 将Date转换为String:public final String format(Date date)。
  • 将String转换为Date:public Date parse(String source) throws ParseException。

现在的关键就在于转换格式上,对于常见的转换单位:年(yyyy)、月(MM)、日(dd)、时(HH)、分(mm)、秒(ss)、毫秒(SSS)。

范例:将日期格式化显示(Date型数据变为String型数据)

import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDemo {
    public static void main(String args[]) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        String str = sdf.format(date);  // 将Date型变为了String型
        System.out.println(str);
    }
}

输出结果

2017-09-30 22:50:29.312

除了可以将日期变为字符串之外,也可以将字符串转换为日期。

范例:将字符串转换为日期

public class TestDemo {
    public static void main(String args[]) throws Exception {
        String str = "2011-11-11 11:11:11.111";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date date = sdf.parse(str);  // 将字符串变为日期型数据
        System.out.println(date);
    }
}

输出结果

Sun Nov 11 11:11:11 CST 2011

在将字符串变为日期型数据的时候,如果日期型数据给出的月不对,那么会自动进行进位。如果给定的字符串与要转换的格式不符合,那么就会出现异常。

Calendar类

Date类和SimpleDate类两个往往是一起使用的,但是Calendar这个类主要是进行一些简单的日期计算的。
Calender类定义:

public abstract class Calendar 
extends Object 
implements Serializable, Cloneable, Comparable<Calendar>

这是一个抽象类,那么应该依靠子类进行对象的实例化操作。但是在这个类里面它提供有一个static方法,此方法返回的正是本类对象:public static Calendar getInstance()。

范例:取得当前日期时间

import java.util.Calendar;

public class TestDemo {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();  // 取得本类对象
        StringBuffer buf = new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("-");
        buf.append(cal.get(Calendar.MONTH) + 1).append("-");  // 这个从0开始算
        buf.append(cal.get(Calendar.DAY_OF_MONTH)).append(" ");
        buf.append(cal.get(Calendar. HOUR_OF_DAY)).append(":");
        buf.append(cal.get(Calendar.MINUTE)).append(":");
        buf.append(cal.get(Calendar.SECOND));
        System.out.println(buf);
    }
}

输出结果

2017-9-30 23:9:4

但是这个类在取得的时候可以进行一些简单的计算,例如:若干天后的日期,三天后的日期。
修改代码

import java.util.Calendar;

public class TestDemo {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();  // 取得本类对象
        StringBuffer buf = new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("-");
        buf.append(cal.get(Calendar.MONTH) + 1).append("-");  // 这个从0开始算
        buf.append(cal.get(Calendar.DAY_OF_MONTH) + 3).append(" ");
        buf.append(cal.get(Calendar. HOUR_OF_DAY)).append(":");
        buf.append(cal.get(Calendar.MINUTE)).append(":");
        buf.append(cal.get(Calendar.SECOND));
        System.out.println(buf);
    }
}

输出结果

2017-10-3 23:12:8

如果是日期计算,要比Date容易,如果使用Date要进行天的计算,那么就需要使用long完成了。

总结

  • 以后数据库中的日期型就使用java.uitl.Date表示。
  • 代码模型:SimpleDateFormat类实现String与Date间的互相转换。

更多内容戳下面:

点赞