Java 入门 31 常用API 日期与时间

 

 Date类

 

 

package com.ITheima.API_Object;

import java.util.Date;

/**
 * 目标:学会使用Date类处理时间,获取时间的信息
 */
public class Test9 {
    public static void main(String[] args) {
        //1  创建一个Date类的对象,代表系统此刻日期时间对象
        Date d = new Date();
        System.out.println(d);//Tue Jun 28 14:54:48 CST 2022


        //2   获取时间毫秒值
        long time = d.getTime();
        System.out.println(time);
        long t1 = System.currentTimeMillis();
        System.out.println(t1);


        //计算当前时间往后走1小时121秒之后的时间是多少
        //1 获取当前时间
        long time1 = System.currentTimeMillis();
        //2 当前时间往后走1小时121秒
        time1 += (60 * 60 + 121) * 1000;

        //3 把当前毫秒值转换成相应的日期对象
        //Date d1=new Date(time1);
        //System.out.println(d1);

        Date d3=new Date();
        d3.setTime(time1);
        System.out.println(d3);

    }
}
View Code

SimpleDateFormat类

 

 

package com.ITheima.API_Object;

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

/**
 * 目标:SimpleDateFormat 简单日期格式化类的使用
 * 格式化时间
 * 解析时间
 */
public class TestDemo11 {
    public static void main(String[] args)  {
        //1 日期对象
        Date d=new Date();
        System.out.println(d);

        //2 格式化这个日期时间(指定最终格式化的形式)
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");

        //3 开始格式化对象成为喜欢的字符串形式
        String rs=sdf.format(d);
        System.out.println(rs);//2022年06月28日 15:23:37 星期二 下午

        //4 格式化时间毫秒值
        long time=System.currentTimeMillis()+121*1000;
        String rs2=sdf.format(time);
        System.out.println(rs2);

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

    }
}
View Code

 

 

 简单日期格式化

package com.ITheima.API_Object;

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

public class Test12 {
    public static void main(String[] args) throws ParseException {
        // 解析时间
        /**
         * 学会使用SimpleDateFormat解析字符串时间成为日期对象
         *有一个时间 21021年08月06日 11:11::11在往后2天14小时 49分 06秒后的时间是多少
         */
        //1 把字符串时间拿到程序中来
        String dataStr="2021年08月06日 11:11:11";

        //2 把字符串时间解析成日期对象(重点) :形式必须与被解释时间的形式完全一直,否则运行时解析报错;
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date d = sdf.parse(dataStr);

        //3 往后走2天14小时 49分 06秒
        long time=d.getTime()+(2L*24*60*60+14*60*60+49*60+6)*1000;

        //4格式化这个时间毫秒值 就是结果
        System.out.println(sdf.format(time));//2021年08月09日 02:00:17
    }
}
View Code

案例

 

 

package com.ITheima.API_Object;

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

public class Test15 {
    public static void main(String[] args) throws ParseException {
        //1  开始 和结束时间
        String startTime="2021-11-11 00:00:00";
        String endTime="2021-11-11 00:10:00";

        //2 小家 小皮
        String xiaoJia="2021-11-11 00:03:47";
        String xiaoPi="2021-11-11 00:10:11";

        //3 解释他们的时间
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d1=sdf.parse(startTime);
        Date d2=sdf.parse(endTime);
        Date d3=sdf.parse(xiaoJia);
        Date d4=sdf.parse(xiaoPi);


        if(d3.after(d1)&&d3.before(d2)){
            System.out.println("xiaoJia秒杀成功");
        }else{
            System.out.println("xiaoJia秒杀失败");
        }


        if(d4.after(d1)&&d4.before(d2)){
            System.out.println("xiaoPi秒杀成功");
        }else{
            System.out.println("xiaoPi秒杀失败");
        }
    }

}
View Code

 

Calendar 抽象类 

 

 

 

package com.ITheima.API_Object;

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

public class Test16 {
    public static void main(String[] args) {
        //1 拿到系统此刻日历对象
        Calendar cal = Calendar.getInstance();
        System.out.println(cal);

        //2 获取日历的信息:public int get(int field) 取日期中的某个字段信息
        int year = cal.get(Calendar.YEAR);
        System.out.println(year);
        int mm = cal.get(Calendar.MONTH) + 1;//月份从0开始算起
        System.out.println(mm);
        int days = cal.get(Calendar.DAY_OF_YEAR);
        System.out.println(days);

        //3public void set(int field,int value); 修改日历的某个字段信息
        // cal.set(Calendar.HOUR,12);
        //System.out.println(cal);

        //4 public void add(int field ,int value); 修改日历的某个字段信息,
        //请问64天后是什么时间
        cal.add(Calendar.DAY_OF_YEAR,64);
        //59分钟后是什么时间
        cal.add(Calendar.MINUTE,59);

        //5 public final Date getTime();拿到此刻的日期对象
        Date d=cal.getTime();
        System.out.println(d);

        //6 public long getTimeInMillis();
        long time=cal.getTimeInMillis();
        System.out.println(time);



    }
}
View Code

JDK8 开始新加的API

 

 

 

 

package com.itheima.d4_jdk8_time;

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.MonthDay;

public class Demo04UpdateTime {
    public static void main(String[] args) {
        LocalTime nowTime = LocalTime.now();
        System.out.println(nowTime);//当前时间
        System.out.println(nowTime.minusHours(1));//一小时前
        System.out.println(nowTime.minusMinutes(1));//一分钟前
        System.out.println(nowTime.minusSeconds(1));//一秒前
        System.out.println(nowTime.minusNanos(1));//一纳秒前

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

        System.out.println(nowTime.plusHours(1));//一小时后
        System.out.println(nowTime.plusMinutes(1));//一分钟后
        System.out.println(nowTime.plusSeconds(1));//一秒后
        System.out.println(nowTime.plusNanos(1));//一纳秒后

        System.out.println("------------------");
        // 不可变对象,每次修改产生新对象!
        System.out.println(nowTime);

        System.out.println("---------------");
        LocalDate myDate = LocalDate.of(2018, 9, 5);
        LocalDate nowDate = LocalDate.now();

        System.out.println("今天是2018-09-06吗? " + nowDate.equals(myDate));//今天是2018-09-06吗? false
        System.out.println(myDate + "是否在" + nowDate + "之前? " + myDate.isBefore(nowDate));//2018-09-05是否在2018-09-06之前? true
        System.out.println(myDate + "是否在" + nowDate + "之后? " + myDate.isAfter(nowDate));//2018-09-05是否在2018-09-06之后? false

        System.out.println("---------------------------");
        // 判断今天是否是你的生日
        LocalDate birDate = LocalDate.of(1996, 8, 5);
        LocalDate nowDate1 = LocalDate.now();

        MonthDay birMd = MonthDay.of(birDate.getMonthValue(), birDate.getDayOfMonth());
        MonthDay nowMd = MonthDay.from(nowDate1);

        System.out.println("今天是你的生日吗? " + birMd.equals(nowMd));//今天是你的生日吗? false
    }
}
View Code

时间戳

package com.itheima.d4_jdk8_time;

import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;

public class Demo05Instant {
    public static void main(String[] args) {
        // 1、得到一个Instant时间戳对象
        Instant instant = Instant.now();
        System.out.println(instant);

        // 2、系统此刻的时间戳怎么办?
        Instant instant1 = Instant.now();
        System.out.println(instant1.atZone(ZoneId.systemDefault()));

        // 3、如何去返回Date对象
        Date date = Date.from(instant);
        System.out.println(date);

        Instant i2 = date.toInstant();
        System.out.println(i2);
    }
}
View Code

 

 

package com.itheima.d4_jdk8_time;

import java.time.LocalDate;
import java.time.Period;

public class Demo07Period {
    public static void main(String[] args) {
        // 当前本地 年月日
        LocalDate today = LocalDate.now();
        System.out.println(today);//

        // 生日的 年月日
        LocalDate birthDate = LocalDate.of(1998, 10, 13);
        System.out.println(birthDate);

        Period period = Period.between(birthDate, today);//第二个参数减第一个参数

        System.out.println(period.getYears());
        System.out.println(period.getMonths());
        System.out.println(period.getDays());
    }
}
View Code

 

 

package com.itheima.d4_jdk8_time;

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;

public class Demo09ChronoUnit {
    public static void main(String[] args) {
        // 本地日期时间对象:此刻的
        LocalDateTime today = LocalDateTime.now();
        System.out.println(today);

        // 生日时间
        LocalDateTime birthDate = LocalDateTime.of(1990,10,1,
                10,50,59);
        System.out.println(birthDate);

        System.out.println("相差的年数:" + ChronoUnit.YEARS.between(birthDate, today));
        System.out.println("相差的月数:" + ChronoUnit.MONTHS.between(birthDate, today));
        System.out.println("相差的周数:" + ChronoUnit.WEEKS.between(birthDate, today));
        System.out.println("相差的天数:" + ChronoUnit.DAYS.between(birthDate, today));
        System.out.println("相差的时数:" + ChronoUnit.HOURS.between(birthDate, today));
        System.out.println("相差的分数:" + ChronoUnit.MINUTES.between(birthDate, today));
        System.out.println("相差的秒数:" + ChronoUnit.SECONDS.between(birthDate, today));
        System.out.println("相差的毫秒数:" + ChronoUnit.MILLIS.between(birthDate, today));
        System.out.println("相差的微秒数:" + ChronoUnit.MICROS.between(birthDate, today));
        System.out.println("相差的纳秒数:" + ChronoUnit.NANOS.between(birthDate, today));
        System.out.println("相差的半天数:" + ChronoUnit.HALF_DAYS.between(birthDate, today));
        System.out.println("相差的十年数:" + ChronoUnit.DECADES.between(birthDate, today));
        System.out.println("相差的世纪(百年)数:" + ChronoUnit.CENTURIES.between(birthDate, today));
        System.out.println("相差的千年数:" + ChronoUnit.MILLENNIA.between(birthDate, today));
        System.out.println("相差的纪元数:" + ChronoUnit.ERAS.between(birthDate, today));
    }
}
View Code

 

posted @ 2022-06-28 22:06  还有什么值得拥有  阅读(30)  评论(0编辑  收藏  举报