Java时间Api

1. Java8前后Api对比

在这里插入图片描述
在这里插入图片描述

2. Date

在这里插入图片描述

2.1 Demo代码

// 创建一个Date对象,代表的是系统当前此刻日期时间
public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
    }
}
结果:Mon Nov 14 20:45:21 CST 2022
public class DateTest {
    public static void main(String[] args) {
    	// 把时间毫秒值转换为Date日期对象
        Date date = new Date(111111123123L);
        System.out.println(date);   // Tue Jul 10 08:12:03 CST 1973
    }
}
public class DateTest {
    public static void main(String[] args) {
    	// 从1970.1.1 0点到此刻的毫秒数
        Date date = new Date();
        System.out.println(date.getTime()); // 1668430105116
    }
}
import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
    	// 放入时间毫秒值转换为日期对象
        Date date = new Date();
        date.setTime(1668430105116L);
        System.out.println(date); // Mon Nov 14 20:48:25 CST 2022
    }
}

3. SimpleDateFormat

代表简单日期格式化,可以用来把日期对象、时间毫秒值格式化成我们想要的形式。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.1 Demo代码

import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();

        long time = date.getTime();

        // 格式化日起对象
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String res = simpleDateFormat.format(date);
        System.out.println(res);

        String res2  = simpleDateFormat.format(time);
        System.out.println("res2:" + res2);
    }
}
结果:
// 2022-11-14 21:12:23
// res2:2022-11-14 21:12:23
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();

        long time = date.getTime();

        // 格式化日起对象
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE a");
        String res = simpleDateFormat.format(date);
        System.out.println(res);
    }
}
// 2022-11-14 21:15:18 星期一 下午

3.2 SimpleDateFormat解析字符串时间成为日期时间

在这里插入图片描述

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

public class DateTest {
    public static void main(String[] args) throws ParseException {
        // SimpleDateFormat解析字符串时间成为日期时间
        String dateStr = "2022-12-12 12:12:11";

        // 格式化
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date res = simpleDateFormat.parse(dateStr);
        System.out.println(res);
        // Mon Dec 12 12:12:11 CST 2022
    }
}

3.3 练习

在这里插入图片描述

package bistu.time;

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

public class DateTest {
    public static void main(String[] args) throws ParseException {
        String start = "2023-11-11 00:00:00";
        String end = "2023-11-11 00:10:00";

        String xiaoJiaStr = "2023-11-11 00:01:18";
        String xiaoPiStr = "2023-11-11 00:10:51";

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Date startDate = simpleDateFormat.parse(start);
        Date endDate = simpleDateFormat.parse(end);

        Date XiaoJiaDate = simpleDateFormat.parse(xiaoJiaStr);
        Date xiaoPiDate = simpleDateFormat.parse(xiaoPiStr);

        if ((XiaoJiaDate.after(startDate)) && (XiaoJiaDate.before(endDate))) {
            System.out.println("小贾抢购成功!");
        }

        if ((xiaoPiDate.after(startDate)) && (xiaoPiDate.before(endDate))) {
            System.out.println("小皮抢购成功!");
        }

    }
}

或者
在这里插入图片描述

4.Calendar

在这里插入图片描述

Calendar
代表的是系统此时此刻时间对应的日历
通过它可以单独获取、修改时间中的年、月、日、时、分、秒等

在这里插入图片描述

package bistu.time;

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

public class CalendarTest {
    public static void main(String[] args) {
        // 得到系统此刻时间对应的日历对象
        Calendar now = Calendar.getInstance();
        System.out.println(now);
        /*
        java.util.GregorianCalendar[time=1668435046552,areFieldsSet=true,areAllFieldsSet=true,
        lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,
        transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,
        MONTH=10,WEEK_OF_YEAR=47,WEEK_OF_MONTH=3,DAY_OF_MONTH=14,DAY_OF_YEAR=318,DAY_OF_WEEK=2,
        DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=10,SECOND=46,MILLISECOND=552,
        ZONE_OFFSET=28800000,DST_OFFSET=0]
         */

        // 获取日历中的某个信息
        int yerar = now.get(Calendar.YEAR);
        System.out.println(yerar); // 2022

        int month = now.get(Calendar.MONTH) + 1;
        System.out.println(month); // 11

        int day = now.get(Calendar.DAY_OF_MONTH);
        System.out.println(day); // 14

        // 一年中的第几天
        int days = now.get(Calendar.DAY_OF_YEAR);
        System.out.println(days); // 318

        // 拿到日历中记录的日期对象
        Date d = now.getTime();
        System.out.println(d); // Mon Nov 14 22:22:54 CST 2022

        // 拿到此刻时间毫秒值
        long time = now.getTimeInMillis();

        // 修改日历中的某个信息
        now.set(Calendar.YEAR,2023);
        System.out.println(now);
        /*
        java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,
        lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,
        dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,
        ERA=1,YEAR=2023,MONTH=10,WEEK_OF_YEAR=47,WEEK_OF_MONTH=3,DAY_OF_MONTH=14,DAY_OF_YEAR=318,DAY_OF_WEEK=2,
        DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,
        HOUR=10,HOUR_OF_DAY=22,MINUTE=24,SECOND=41,MILLISECOND=33,ZONE_OFFSET=28800000,DST_OFFSET=0]
         */

        // 为某个信息增加或者减少多少
        now.add(Calendar.DAY_OF_YEAR,100);
        System.out.println(now.get(Calendar.YEAR));
    }
}

5. LocalDate、LocalTime、LocalDateTime在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1 LocalDate

 		// 0.获取本地日期对象
        LocalDate ld = LocalDate.now();
        System.out.println(ld);

        // 1.获取日期对象中的信息
        int year = ld.getYear();
        System.out.println(year);

        int month = ld.getMonthValue();
        System.out.println(month);

        int day = ld.getDayOfMonth();
        System.out.println(day);

        int dayOfYear = ld.getDayOfYear();
        System.out.println(dayOfYear);

        // 星期几
        int dayOfWeek = ld.getDayOfWeek().getValue();
        System.out.println(dayOfWeek);
result:
		2022-11-14
		2022
		11
		14
		318
		1

LocalDate

package bistu.time;

import java.time.LocalDate;

public class CalendarTest {
    public static void main(String[] args) {
        // 0.获取本地日期对象
        LocalDate ld = LocalDate.now();
        System.out.println(ld);

        // 1.获取日期对象中的信息
        int year = ld.getYear();
        System.out.println(year);

        int month = ld.getMonthValue();
        System.out.println(month);

        int day = ld.getDayOfMonth();
        System.out.println(day);

        int dayOfYear = ld.getDayOfYear();
        System.out.println(dayOfYear);

        // 星期几
        int dayOfWeek = ld.getDayOfWeek().getValue();
        System.out.println(dayOfWeek);

        // 2.直接修改某个信息 withYear、withMonth、withDayOfMonth、WithDayOfYear 返回不可变对象
        LocalDate ld2 = ld.withYear(2019);
        System.out.println(ld2); //2019-11-14

        // 3.把某个信息加多少:plusYears、plusMonths、plusDays、plusWeeks
        LocalDate ld3 = ld.plusMonths(1);
        System.out.println(ld3);

        // 4. 把某个信息减多少:minusYears、minusMonths、minusDays、minusWeeks
        LocalDate ld4 = ld.minusYears(1);
        System.out.println(ld4); // 2021-11-14

        // 5.获取指定日期的LocalDate对象:public static LocalDate of(int year,int month, int dayOfMonth)
        LocalDate ld5 = LocalDate.of(2019, 9, 3);
        System.out.println(ld5); // 2019-09-03

        // 6.判断两个日期对象 :equals、isBefore、isAfter
        System.out.println(ld5.isAfter(ld4)); //false
    }
}

5.2 LocalTime

在这里插入图片描述

在这里插入图片描述

5.3 LocalDateTime

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.ZoneId

在这里插入图片描述

package bistu.time;

import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class CalendarTest {
    public static void main(String[] args) {
        // 1.ZoneId的常见方法
        //public static ZoneId systemDefault:获取系统默认的时区
        ZoneId zoneId = ZoneId.systemDefault();
        System.out.println(zoneId.getId());   // 系统默认的时区 result:Asia/Shanghai

        // public static Set<String> getAvailableZoneIds():获取Java支持的全部时区id
        System.out.println(ZoneId.getAvailableZoneIds());

        // public static ZoneId of(String zonId):把某个时区id封装成ZoneId对象
        ZoneId zoneId1 = ZoneId.of("America/New_York");
        System.out.println(zoneId1); // America/New_York

        // 2、ZonedDateTime:带时区的时间
        // public static ZonedDateTime now(ZoneId zone): 获取某个时区的ZonedDateTime对象
        ZonedDateTime now = ZonedDateTime.now(zoneId1);
        System.out.println(now); // 2022-11-14T10:08:00.363-05:00[America/New_York]

        System.out.println(ZonedDateTime.now(Clock.systemUTC())); //世界标准时间

        //public static ZonedDateTime now(): 获取系统默认时区的ZonedDateTime对象
        ZonedDateTime now2 = ZonedDateTime.now();
        System.out.println(now2); // 2022-11-14T23:09:37.932+08:00[Asia/Shanghai]
    }
}

Calendar instance = Calendar.getInstance(TimeZone.getTimeZone(zoneId1));
        System.out.println(instance);

7.Instant

在这里插入图片描述
在这里插入图片描述

8.DateTimeFormatter

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.Period、Duration

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

附录

1.课程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boy快快长大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值