时间(Date类、DateFormat类、Calendar类)

1、Date类

(1)时间原点:

时间原点是1970年1月1日00:00:00

(2)构造方法:

Date类的构造方法一共有六个,其中四个已经过时:

空参的构造方法,获取当前操作系统的日期和时间:

有参数的构造方法,将对应的毫秒值转化为日期和时间:

将Date自元年开始表示的日期转化为毫秒值:

将毫秒值转化为日期:

打印Date对象时默认调用此方法:

(3)方法的运用:

import java.util.Date;
public class DateDemo {
    public static void main(String[] args) {
        Date date = new Date(0);// 毫秒值为0,即元年
        System.out.println("date类元年为:" + date);
        Date date1 = new Date(12345678912345L);// 毫秒值
        System.out.println("date类元年后的12345678912345毫秒为:" + date1);
        Date date2 = new Date();
        System.out.println("现在的时间为:" + date2.getTime() + "毫秒");
        System.out.println("现在的时间为:" + date2.toString());
    }
}

 从运行结果来看date类的元年为:1970年1月1日08:00:00,不是1970年1月1日00:00:00,是因为中国是东八区,所以要加上8个小时。

 2、DateFormat类

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。可以将一个Date对象转换为一个符合指定格式的字符串,也可以将一个符合指定格式的字符串转为一个Date对象。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。

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

public class DateFormatDemo {
    public static void main(String[] args) throws ParseException {
        Date date2 = new Date();
        System.out.println("现在的时间为:" + date2.getTime() + "毫秒");
        System.out.println("现在的时间为:" + date2.toString());

        Date date = new Date(date2.getTime());
        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");// 对日期进行格式化
        String str_time = df.format(date);
        System.out.println(str_time);// 把Date对象转换成String

        String str = "2019年7月9日";
        DateFormat df1 = new SimpleDateFormat("yyyy年MM月dd日");
        Date date1 = df1.parse(str);//parse: 从给定字符串的开始解析文本,以生成一个日期。
        System.out.println(date1);
    }
}

 3、Calendar类

Calendar类:是日历类,有很多静态方法。

import java.util.Calendar;
import java.util.Date;
public class Calendardemo {
    public static void main(String[] args) {
        //Calendar类的方法getTime()
        Calendar c1 = Calendar.getInstance();//不需要直接new 子类的对象,通过静态方法直接获取
        Date date = c1.getTime();//把日历对象,转成Date日期对象
        System.out.println(date);
        
        Calendar c2 = Calendar.getInstance();
        c2.add(Calendar.DAY_OF_MONTH, -300);// 让日历中的天数向后偏移300天
        int year = c2.get(Calendar.YEAR);//年
        int month = c2.get(Calendar.MONTH) + 1;//月,月份从零开始,所以月份要加1
        int day = c2.get(Calendar.DAY_OF_MONTH);//日
        System.out.println(year + "年" + month + "月" + day + "日");
        
        Calendar c3 = Calendar.getInstance();
        c3.set(2099, 4, 1);
        int year1 = c3.get(Calendar.YEAR);//年
        int month1 = c3.get(Calendar.MONTH) + 1;//月
        int day1 = c3.get(Calendar.DAY_OF_MONTH);//日
        System.out.println(year1 + "年" + month1 + "月" + day1 + "日");
        
        Calendar c4 = Calendar.getInstance();
        int year2 = c4.get(Calendar.YEAR);//年
        int month2 = c4.get(Calendar.MONTH) + 1;//月
        int day2 = c4.get(Calendar.DAY_OF_MONTH);//日
        System.out.println(year2 + "年" + month2 + "月" + day2 + "日");
        
        Calendar c5= Calendar.getInstance();
        System.out.println("年:" + c5.get(Calendar.YEAR));
        System.out.println("月:" + (c5.get(Calendar.MONTH) + 1));       
        System.out.println("日:" + c5.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:" + c5.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:" + c5.get(Calendar.MINUTE));
        System.out.println("秒:" + c5.get(Calendar.SECOND));
    }
}

 最大的特点是可以分别获取:年月日时分秒

总结:

1、第一代、第二代和第三代获取当前日期

public class DateDemo {
    @Test
    public void test1(){
        Date date=new Date();
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh时mm分ss秒");
        String dateString=simpleDateFormat.format(date);
        System.out.println(dateString);
    }

    @Test
    public void test2(){
        Calendar calendar=Calendar.getInstance();
        int year=calendar.get(Calendar.YEAR);
        int month=calendar.get(Calendar.MONTH);
        int day=calendar.get(Calendar.DAY_OF_MONTH);
        int hour=calendar.get(Calendar.HOUR);
        int minute=calendar.get(Calendar.MINUTE);
        int second=calendar.get(Calendar.SECOND);
        System.out.println(year+"-"+month+"-"+day+"-"+hour+"时"+minute+"分"+second+"秒");
    }
@Test
public void test3(){//jdk8 LocalDateTime localDateTime=LocalDateTime.now(); DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH时mm分ss秒"); String dateString=dateTimeFormatter.format(localDateTime); System.out.println(dateString); } }
2020-08-04 19时33分53秒
原文地址:https://www.cnblogs.com/zhai1997/p/11349658.html