日期,日历类 Date、SimpleDateFormat、Calendar

一(Date类):
在JDK的java.util包中,提供了Date类用于表示日期和时间,精确到毫秒。随着JDK版本的不断升级和发展,Date类中的大部分构造方法和普通方法都已经不推荐使用。在JDK8中,Date类只有2个构造方法可以使用,具体如下。

1.Date():用来创建当前时间的Date对象。

2.Date(long date):用来创建指定时间的Date对象,初始化时间为在1970年1月1日0时0分0秒的基础上去加毫秒值表示的时间。

计算机的初始时间:记为1970年1月1日0时0分0秒。

package 日期与时间类;
 

package ChangYL.DateTest;

import java.util.Date;

/**
 * @author 小m
 */
public class DateTest01 {

    public static void main(String[] args) {

        // 创建日期类
        Date date1 = new Date();
        // 获取当前基于环境的时间
        System.out.println(date1);

        long time = date1.getTime();
        //计算当前时间距离1970年1月1日 00:00:00 的 毫秒值---时间戳
        System.out.println(time);

        Date date2 = new Date(90000);
        //创建一个距离1970年1月1日 00:00:00 经过了多少毫秒的时间
        System.out.println(date2);



    }
}


 

二(SimpleDateFormat类):
SimpleDateFormat类可以使用new关键字创建实例对象,它的构造方法需要接收一个表示时间格式模板的字符串参数,用来以区域设置日期的格式化和解析。

SimpleDateFormat构造方法:

1. public SimpleDateFormat()//表示设置默认格式和日期 。

2. public SimpleDateFormat(String pattern)

SimpleDateFormat类格式化和解析涉及的方法:

1.格式化方法:(Date-->SimpleDateFormat)
2.解析方法:(String---->Date)

package ChangYL.DateTest;


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

/**
 * @author 小m
 */
public class DateTest02 {

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

        //SimpleDateFormat 用来实现 日期 和 字符串 之间的相互转换
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date1 = new Date();

        // 把日期转换成指定格式的字符串
        String format = sdf.format(date1);
        System.out.println(format);

        // 把指定格式的 字符串 转换成 日期
        String time = "2000/10/23 08:20:54";
        Date date2 = sdf.parse(time);
        System.out.println(date2);
    }
}


 

三(Calendar类):
Calendar类用于完成日期和时间字段的操作,可以通过特定的字段设置和读取日期的特定部分,比如年月日时分秒等。Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后才能调用其相应的方法,具体示例如下:

Calendar calendar=Calendar.getInstance();
Calendar类为操作日期和时间提供了大量的方法,例如:

1.int get(int field):返回指定日历字段field的值

2.void set(int field,int value):设置指定日历字段field的值value

3.void set(int year,int month,int date):设置Calendar对象的年月日3个字段的值

4.void set(int year,int month,int date,int hour,int minute,int second):设置Calendar对象的年月日6个字段的值

5.void add(int field,int amount):为指定的日历字段field增加或减少指定的时间量amount

6.Date getTime()返回一个表示当前Calendar表示的时间的Date对象,即Calendar———>Date

以上大多数方法int类型的参数field,该参数需要接收Calendar类中的常量值,分别代表着不同的字段。例如:

1.Calendar.YEAR:表示年份

2.Calendar.MONTH:表示月份。在使用该字段时,月份的起始值是从0开始的,因此要获取当前的月份需要在Calendar.MONTH的基础上+1

3.Calendar.DATE:表示日(天)

4.Calendar.HOUR:表示小时

5.Calendar.MINUTE:表示分钟

6.Calendar.SECOND:表示秒

package ChangYL.CalenderTest;

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

/**
 * @author 小m
 */
public class CalenderTest01 {

    public static void main(String[] args) {

        //Calendar类是一个抽象类,可以通过Calendar 的getInstance方法返回一 个Calendar 对象
        Calendar calendar = Calendar.getInstance();

        //获取当前系统的时间
        Date date1 = calendar.getTime();
        System.out.println(date1);

        Long timeInMillis = calendar.getTimeInMillis();
        System.out.println("当前时间的亳秒值: " + timeInMillis);
        TimeZone timeZone = calendar.getTimeZone();
        System.out.println("时区: " + timeZone);

        //get.方法可以根据指定的日历字段获取时间对应的值
        int year = calendar.get(Calendar.YEAR);
        System.out.println("年份: " + year);
        int month = calendar.get(Calendar.MONTH);

        //0-11 表示1-12月
        System.out.println("月份: " + (month + 1));
        int date = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("日期: " + date);
        int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println("本年的第: " + dayOfYear);


        System.out.println("------------------------");

        //可以获取指定时间月份0 - 11表示1 - 12月
        calendar.set(2000, 9, 28, 15, 32,35);
        Date date2 = calendar.getTime();
        System.out.println(date2);
    }
}

猜你喜欢

转载自blog.csdn.net/m0_70051776/article/details/128152981