Java日期处理

一、相关类

1、Date: 
  Date表示特定的瞬间,精确到毫秒,Date中的相应方法已废弃,从JDK 1.1开始,应该使用Calendar类实现日期和时间字段之间转换。 
2、DateFormat: 
  DateFormat是日期/时间格式化子类的抽象类,格式化并解析日期或时间,可以进行日期 -> 文本 ,文本-> 日期的转换。子类SimpleDateFormat。 
3、Calendar: 
  Calendar是日历抽象类,可通过其获取日期时间。推荐使用。

package datetext;

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

public class Text {

    public static void main(String[] args) {
        Date d = new Date();
        System.out.println(d);//第一种表示方法,Sat Jul 22 20:18:10 CST 2017
        System.out.println("----------------------");
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(d));//第二种表示方法,2017-07-22 20:18:10|SimpleDateFormat的用法
        System.out.println("----------------------");
//老方法,慢慢的被淘汰 System.out.println(d.getTime()); System.out.println(d.getYear()); System.out.println(d.getMonth()+1); System.out.println(d.getDate()); System.out.println(d.getHours()); System.out.println(d.getMinutes()); System.out.println(d.getSeconds()); System.out.println("----------------------"); //新方法,用Calendar Calendar c = Calendar.getInstance(); //Calendar.getInstance() 使用默认时区和语言环境获得一个日历。 System.out.println(c.get(Calendar.YEAR)); System.out.println(c.get(Calendar.MONTH)+1);//注意:月份需要+1表示当前月 System.out.println(c.get(Calendar.DATE)); System.out.println(c.get(Calendar.HOUR)); System.out.println(c.get(Calendar.MINUTE)); System.out.println(c.get(Calendar.SECOND)); System.out.println("----------------------"); //SimpleDateFormat Date d2 = new Date(); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf2.format(d2)); Calendar c2 =Calendar.getInstance(); Date d_cal = c2.getTime(); System.out.println(sdf2.format(d_cal)); } }

二、SimpleDateFormat

SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。

SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat 中的 getTimeInstancegetDateInstancegetDateTimeInstance 来新的创建日期-时间格式化程序。

1、日期和时间模式

2、例子:给定的日期和时间为美国太平洋时区的本地时间 2001-07-04 12:08:56

三、表示国际时间(用Calendar)

package datetext;

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

public class Text {

    public static void main(String[] args) {
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(d));
        System.out.println("----------------------");
        
        /*String[] ids = TimeZone.getAvailableIDs();
        
        for(int i=0;i<ids.length;i++){
            System.out.println(ids[i]);//输出所有地区的ID
        }*/
        
        //以日本为例
        Calendar c = Calendar.getInstance(TimeZone.getTimeZone("Japan"));  //getTimeZone(),获得时区
        System.out.println(c.get(Calendar.HOUR));  //12小时制
        System.out.println(c.get(Calendar.HOUR_OF_DAY));  //24小时制
    }

}

四、把长整型数设置成一个特定的时间点:

package datetext;

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

public class Text {

    public static void main(String[] args) {
        Date d = new Date();
        //getTime(),返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
        System.out.println(d.getTime());//输出值为:1500733409509
        
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(1500733409509l);//setTimeInMillis(long millis),
                                          //用给定的 long 值设置此 Calendar 的当前时间值。
        
        Date dd = c.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(dd)); //输出值为 2017-07-22 22:23:29
    }

}

五、Timestamp(时间戳,可以精确到毫秒)

package datetext;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Text {

    public static void main(String[] args) {
        Date d = new Date();
        
        System.out.println(d.getTime());//输出值为:1500733409509
        
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(1500733409509l);
        
        Date dd = c.getTime();
        Timestamp ts = new Timestamp(1500733409509l);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
        System.out.println(sdf.format(ts)); //输出值为 2017-07-22 22:23:29:509
    }

}
原文地址:https://www.cnblogs.com/sutao/p/7223152.html