菜鸡的Java笔记 日期操作类

日期操作类
        Date 类与 long 数据类型的转换
        SimpleDateFormat 类的使用
        Calendar 类的使用
        
        如果要想取得当前的日期时间,直接实例化 java.util.Date; 类即可取得
        

package cn.mysterious.study3;

import java.util.Date;

public class DateClass {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Date date = new Date();
        System.out.println(date);
    }

}
/*
    结果:
    Tue Sep 05 23:23:11 CST 2017
*/

           
        虽然 Date 类的对象可以取得当前的日期时间,但是结果是这个日期时间的可读性不合适中国人
        一直强调,日期时间 = long 数据内容。这一点在 Date 两类上有很好的体现
            构造方法: public Date(long date)
            将 Date 以 long 型返回: public long getTime()
            
        范例:实现转换

package cn.mysterious.study3;

import java.util.Date;

public class DateClass {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Date date = new Date(); // Date 类对象
        long num = date.getTime(); // 将 Date 以 long 型返回
        System.out.println(num);
    }

}

           
            在实际的使用过程之中,很少会出现这样的转换,但是至少你的头脑中应该清楚,long 和 Date 可以互相转换

    
    日期格式化: SimpleDateFormat (核心,背)
        Date 虽然可以直接进行日期时间的取得,但是大部分情况下这样的日期时间取得并不好用,因为它给出日期时间格式我们很多人看不懂
        所以在java中考虑到了日期的显式格式要求。那么往往最终都会按照 String进行显式
        如果要想实现这样的格式化操作,可以使用 java.text.SimpleDateFormat 类完成,在这个类有以下几个方法:
            构造方法: public SimpleDateFormat(String pattern)
                格式化标记:年(yyyy)月(MM)日(dd)时(HH)分(mm)秒(ss)毫秒(SS)
            将日期格式化为字符串: public final String format(Date date)
            将字符串变为日期时间: public Date parse(String source) throws ParseException
        
        范例:就爱那个日期格式化为字符串

package cn.mysterious.study3;

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

public class DateClass {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Date date = new Date(); // Date 类对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS");
        String str = sdf.format(date); // 将日期格式化为字符串
        System.out.println(str);
    }

}

           
        范例:将字符串变为日期时间

package cn.mysterious.study3;

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

public class DateClass {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String str = "1997-10-01 00:00:00.001";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS");
        Date date = sdf.parse(str); // 将字符串变为日期
        System.out.println(date);
    }

}

           
        总结:现在为止 String,基本类型,Date 已经实现了彻底的转换贯通
            String 变为基本类型:包装类
            基本类型变为 String : String vallueOf();
            Date 与 String 转换: SimpleDateFormat

    Calendar 类
        Calendar 主要的功能是可以进行日期时间的拼凑使用。 Calendar 本身是一个抽象类
        但是现在可以直接利用这个抽象类中提供的 static 方法进行实例化对象的取得:
            public static Calendar getInstance()
        随后可以利用 Calendar 类中的一个方法取得指定的日期时间数据:
            public int get(int field)
        但是在使用此方法的时候需要使用一些特定的常量
        
        范例:取得当前的日期时间

package cn.mysterious.study3;

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

public class DateClass {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        Calendar cal = Calendar.getInstance(); // 取得 Calendar 类的实例化对象
        StringBuffer buf = new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("年");
        buf.append(cal.get(Calendar.MONTH) + 1).append("月"); // 它是从0月开始计算的 所以+1
        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)).append("秒");
        buf.append(cal.get(Calendar.MILLISECOND)).append("毫秒");
        System.out.println(buf);
    }

}

           
            使用 Calendar 的好处是可以方便的计算出日期或时间之间的间隔

    总结:
        java.util.Date; 代表的就是日期时间
        SimpleDateFormat 可以实现字符串与日期间的转换操作



原文地址:https://www.cnblogs.com/mysterious-killer/p/10123966.html