SimpleDateFormat类

1.SimpleDateFormat类有什么作用?

​ SimpleDateFormat可以对Date对象和日期字符串,进行格式化和解析

2.如何使用?

1.常用的模式字母及应对关系如下:

HH:24小制,hh:12小时制
2.SimpleDateFormat类构造方法
在这里插入图片描述
3.SimpleDateFormat类的常用方法

  • 格式化(从Date到String)

​ public final String format(Date date):将日期格式化成日期/时间字符串

  • 解析(从日期/时间字符串String到Date)

​ public Date parse(String source):从给定字符串的开始解析文本以生成日期

示例代码(公历日期标准格式为;2007年2月6日;或:2007-02-06)

public class DateDemo4 {
public static void main(String[] args) throws ParseException {
String s = “2048-01-01”;

    //SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    Date date = sdf.parse(s);

    System.out.println(date);
}

}

时间日期类练习 (重点)

  • 需求

    秒杀开始时间是2020年11月11日 00:00:00,结束时间是2020年11月11日 00:10:00,用户小贾下单时间是2020年11月11日 00:03:47,用户小皮下单时间是2020年11月11日 00:10:11,判断用户有没有成功参与秒杀活动

  • 实现步骤

    1. 判断下单时间是否在开始到结束的范围内
    2. 把字符串形式的时间变成毫秒值
  • 代码实现
    public static void main(String[] args) throws ParseException {
    //开始时间:2020年11月11日 0:0:0
    //结束时间:2020年11月11日 0:10:0

    //小贾2020年11月11日 0:03:47
      //小皮2020年11月11日 0:10:11
    
    
      //1.判断两位同学的下单时间是否在范围之内就可以了。
    
    //2.要把每一个时间都换算成毫秒值。
    
      String start = "2020年11月11日 0:0:0";
      String end = "2020年11月11日 0:10:0";
    
      String jia = "2020年11月11日 0:03:47";
      String pi = "2020年11月11日 0:10:11";
    
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    long startTime = sdf.parse(start).getTime();
      long endTime = sdf.parse(end).getTime();
    

// System.out.println(startTime);
// System.out.println(endTime);
long jiaTime = sdf.parse(jia).getTime();
long piTime = sdf.parse(pi).getTime();

  if(jiaTime >= startTime && jiaTime <= endTime){
        System.out.println("小贾同学参加上了秒杀活动");
    }else{
        System.out.println("小贾同学没有参加上秒杀活动");
    }

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

    if(piTime >= startTime && piTime <= endTime){
        System.out.println("小皮同学参加上了秒杀活动");
    }else{
        System.out.println("小皮同学没有参加上秒杀活动");
    }
}

}
##总结

  1. 北京时间需要在世界标准时间加上8小时
  2. 计算机中时间原点

​ 1970年1月1日 00:00:00

3.时间换算单位

​ 1秒 = 1000毫秒

4.Date类概述

​ Date 代表了一个特定的时间,精确到毫秒

5.如何创建时间对象?

​ 通过Date的构造方法,空参构造和带参构造,带参构造参数:是自1970年7月1日00:00:00经过的毫秒数

6.如何格式化和解析日期

通过SimpleDateFormat,创建SimpleDateFormat类:new SimpleDateFormat(“日期模式”)

格式化:format(Date string)

解析: parse(String date)

JDK8新增的日期类分得更细致一些,比如表示年月日用LocalDate类、表示时间秒用LocalTime类、而表示年月日时分秒用LocalDateTime类等;除了这些类还提供了对时区、时间间隔进行操作的类等。它们几乎把对日期/时间的所有操作都通过了API方法,用起来特别方便。

LocalDate类的基本使用
public static void main(String[] args) {
// 0、获取本地日期对象(不可变对象)
LocalDate ld = LocalDate.now(); // 年 月 日
System.out.println(ld);

    // 1、获取日期对象中的信息
    int year = ld.getYear(); // 年
    int month = ld.getMonthValue(); // 月(1-12)
    int day = ld.getDayOfMonth(); // 日
    int dayOfYear = ld.getDayOfYear();  // 一年中的第几天
    int dayOfWeek = ld.getDayOfWeek().getValue(); // 星期几
    System.out.println(year);
    System.out.println(day);
    System.out.println(dayOfWeek);

    // 2、直接修改某个信息: withYear、withMonth、withDayOfMonth、withDayOfYear
    LocalDate ld2 = ld.withYear(2099);
    LocalDate ld3 = ld.withMonth(12);
    System.out.println(ld2);
    System.out.println(ld3);
    System.out.println(ld);

    // 3、把某个信息加多少: plusYears、plusMonths、plusDays、plusWeeks
    LocalDate ld4 = ld.plusYears(2);
    LocalDate ld5 = ld.plusMonths(2);

    // 4、把某个信息减多少:minusYears、minusMonths、minusDays、minusWeeks
    LocalDate ld6 = ld.minusYears(2);
    LocalDate ld7 = ld.minusMonths(2);

    // 5、获取指定日期的LocalDate对象: public static LocalDate of(int year, int month, int dayOfMonth)
    LocalDate ld8 = LocalDate.of(2099, 12, 12);
    LocalDate ld9 = LocalDate.of(2099, 12, 12);

    // 6、判断2个日期对象,是否相等,在前还是在后: equals isBefore isAfter
    System.out.println(ld8.equals(ld9));// true
    System.out.println(ld8.isAfter(ld)); // true
    System.out.println(ld8.isBefore(ld)); // false
}

}
public class Test2_LocalTime {
public class Test2_LocalTime {
public static void main(String[] args) {
// 0、获取本地时间对象
LocalTime lt = LocalTime.now(); // 时 分 秒 纳秒 不可变的
System.out.println(lt);

    // 1、获取时间中的信息
    int hour = lt.getHour(); //时
    int minute = lt.getMinute(); //分
    int second = lt.getSecond(); //秒
    int nano = lt.getNano(); //纳秒

    // 2、修改时间:withHour、withMinute、withSecond、withNano
    LocalTime lt3 = lt.withHour(10);
    LocalTime lt4 = lt.withMinute(10);
    LocalTime lt5 = lt.withSecond(10);
    LocalTime lt6 = lt.withNano(10);

    // 3、加多少:plusHours、plusMinutes、plusSeconds、plusNanos
    LocalTime lt7 = lt.plusHours(10);
    LocalTime lt8 = lt.plusMinutes(10);
    LocalTime lt9 = lt.plusSeconds(10);
    LocalTime lt10 = lt.plusNanos(10);

    // 4、减多少:minusHours、minusMinutes、minusSeconds、minusNanos
    LocalTime lt11 = lt.minusHours(10);
    LocalTime lt12 = lt.minusMinutes(10);
    LocalTime lt13 = lt.minusSeconds(10);
    LocalTime lt14 = lt.minusNanos(10);

    // 5、获取指定时间的LocalTime对象:
    // public static LocalTime of(int hour, int minute, int second)
    LocalTime lt15 = LocalTime.of(12, 12, 12);
    LocalTime lt16 = LocalTime.of(12, 12, 12);

    // 6、判断2个时间对象,是否相等,在前还是在后: equals isBefore isAfter
    System.out.println(lt15.equals(lt16)); // true
    System.out.println(lt15.isAfter(lt)); // false
    System.out.println(lt15.isBefore(lt)); // true

}

}
LocalDateTime类的基本使用
public static void main(String[] args) {
// 0、获取本地日期和时间对象。
LocalDateTime ldt = LocalDateTime.now(); // 年 月 日 时 分 秒 纳秒
System.out.println(ldt);

    // 1、可以获取日期和时间的全部信息
    int year = ldt.getYear(); // 年
    int month = ldt.getMonthValue(); // 月
    int day = ldt.getDayOfMonth(); // 日
    int dayOfYear = ldt.getDayOfYear();  // 一年中的第几天
    int dayOfWeek = ldt.getDayOfWeek().getValue();  // 获取是周几
    int hour = ldt.getHour(); //时
    int minute = ldt.getMinute(); //分
    int second = ldt.getSecond(); //秒
    int nano = ldt.getNano(); //纳秒

    // 2、修改时间信息:
    // withYear withMonth withDayOfMonth withDayOfYear withHour
    // withMinute withSecond withNano
    LocalDateTime ldt2 = ldt.withYear(2029);
    LocalDateTime ldt3 = ldt.withMinute(59);

    // 3、加多少:
    // plusYears  plusMonths plusDays plusWeeks plusHours plusMinutes plusSeconds plusNanos
    LocalDateTime ldt4 = ldt.plusYears(2);
    LocalDateTime ldt5 = ldt.plusMinutes(3);

    // 4、减多少:
    // minusDays minusYears minusMonths minusWeeks minusHours minusMinutes minusSeconds minusNanos
    LocalDateTime ldt6 = ldt.minusYears(2);
    LocalDateTime ldt7 = ldt.minusMinutes(3);


    // 5、获取指定日期和时间的LocalDateTime对象:
    // public static LocalDateTime of(int year, Month month, int dayOfMonth, int hour,
    //                                  int minute, int second, int nanoOfSecond)
    LocalDateTime ldt8 = LocalDateTime.of(2029, 12, 12, 12, 12, 12, 1222);
    LocalDateTime ldt9 = LocalDateTime.of(2029, 12, 12, 12, 12, 12, 1222);

    // 6、 判断2个日期、时间对象,是否相等,在前还是在后: equals、isBefore、isAfter
    System.out.println(ldt9.equals(ldt8));
    System.out.println(ldt9.isAfter(ldt));
    System.out.println(ldt9.isBefore(ldt));

    // 7、可以把LocalDateTime转换成LocalDate和LocalTime
    // public LocalDate toLocalDate()
    // public LocalTime toLocalTime()
    // public static LocalDateTime of(LocalDate date, LocalTime time)
    LocalDate ld = ldt.toLocalDate();
    LocalTime lt = ldt.toLocalTime();
    LocalDateTime ldt10 = LocalDateTime.of(ld, lt);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值