Java常用时间API

一、时间类Date

  用来表示特定的时间,具体精确到毫秒。按照API,目前的Date类提供了两个构造函数来实例化。

(1)public Date(){this(System.currentTimeMills())}

     使用当前日期和时间初始化

  (2) public Date(long date){fastTime = date}

    使用从1970年1月1日起开始算的毫秒数作为参数来进行对象的初始化

public static void main(String[] args) {
        Date now = new Date();
        System.out.println(now);

        Date date = new Date(151516);
        System.out.println(date);

    }

输出:

Wed Sep 12 15:37:12 CST 2018
Thu Jan 01 08:02:31 CST 1970

 

二、时间格式化类DateFormat

  属于包java.text包中的时间格式化类,目前常用的是java.util.Dateformat、java.util.SimpleDateFormat

package com.wj.commonapi;

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

/**
 *日期格式化类
 * API描述:
 * G Era 标识符 Text AD
 * y 年 Year 1996 ; 96
 * M 年中的月份 Month July ;July; 07
 * w 年终的周数 Number 27
 * W 月份中的周数 Number 2
 * D 年中的天数 Number 189
 * d 月份中的天数 Number 2
 * F 月份中的星期 Number 2
 * E 星期中的天数 Text Tuesday ; Tue
 * a Am/pm 标记 Text pm
 * H  一天中的小时数(0-23)  Number  0
 * k  一天中的小时数(1-24)  Number  24
 * K  am/pm 中的小时数(0-11)  Number  0
 * h  am/pm 中的小时数(1-12)  Number  12
 * m  小时中的分钟数  Number  30
 * s  分钟中的秒数  Number  55
 * S  毫秒数  Number  978
 * z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00
 * Z  时区  RFC 822 time zone  -0800
 *目前常用: yyyy-MM-dd HH:mm:ss  2018-09-14 10:42:30
 * yyyy-MM-dd E a HH:mm:ss  2018-09-14 星期三 上午 10:42:30
 */
public class DateformatDemo {

    public static void main(String[] args) throws ParseException {

        // DateFormat 是抽象类,不可以直接通过new进行实例化, 可以通过子类进行实例化,创建日期格式化对象
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        //创建时间对象
        Date date = new Date();
        System.out.println("格式化之前时间:"+date);

        //格式化时间,格式化之后为String类型
        String formatDate = format.format(date);
        System.out.println("格式化之后的时间:"+ formatDate);

        //创建另一种格式化时间对象
        DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd E a HH:mm:ss");
        Date date1 = new Date();
        System.out.println("格式化之前:"+ date1);

        //格式化
        String formatDate1 = format1.format(date1);
        System.out.println("格式化之后:"+ formatDate1);

        //将string类型的格式化之后的时间转换成Date类型的时间对象
        Date parse1 = format.parse("2018-09-14 10:42:30");
        Date parse2 = format1.parse("2018-09-14 星期三 上午 10:42:30");

        System.out.println("转换之后的时间1:"+ parse1);
        System.out.println("转换之后的时间2:"+ parse2);
    }
}

输出:

格式化之前时间:Fri Sep 14 10:55:50 CST 2018
格式化之后的时间:2018-09-14 10:55:50
格式化之前:Fri Sep 14 10:55:50 CST 2018
格式化之后:2018-09-14 星期五 上午 10:55:50
转换之后的时间1:Fri Sep 14 10:42:30 CST 2018
转换之后的时间2:Fri Sep 14 10:42:30 CST 2018

三、Calendar

  Calendar 是属于java.util包专门用于操作日期的抽象类,由于是抽象类,则无法通过new关键字来获取实例化对象,但是这个类本身提供了通用的getInstance()方法来获取一个Calendar对象,而这个类中相关字段则是由当前时间和日期初始化。

 /**
     *使用默认时区和地区获取日历,时间则是以当前时间
     * @return a Calendar.
     */
    public static Calendar getInstance()
    {
        return createCalendar(TimeZone.getDefault(), Locale.getDefault(Locale.Category.FORMAT));
    }

    /**
     * 使用指定时区和默认区域设置的日历,时间则是以当前时间
     * {@link Locale.Category#FORMAT FORMAT} locale.
     * @param zone the time zone to use
     * @return a Calendar.
     */
    public static Calendar getInstance(TimeZone zone)
    {
        return createCalendar(zone, Locale.getDefault(Locale.Category.FORMAT));
    }

    /**
     * 使用默认时区和指定地区的日历,返回的日历是基于当前时间在指定区域、默认时区的日历
     * @param aLocale the locale for the week data
     * @return a Calendar.
     */
    public static Calendar getInstance(Locale aLocale)
    {
        return createCalendar(TimeZone.getDefault(), aLocale);
    }

    /**
     * 使用指定时区和地区的日历,返回的仍然是基于当前时间指定的时区和地区的日历
     * @param zone the time zone to use
     * @param aLocale the locale for the week data
     * @return a Calendar.
     */
    public static Calendar getInstance(TimeZone zone,
                                       Locale aLocale)
    {
        return createCalendar(zone, aLocale);
    }

具体对年月日的操作使用可参考:https://www.cnblogs.com/huangminwen/p/6041168.html

你可能感兴趣的:(java基础)