时间日期类之Date、LocalDateTime、格式化和解析之SimpleDateFormat、DateTimeFormatter、时间间隔对象之Period、Duration

1. 时间日期类

计算机中的时间原点:1970年1月1日 00:00:00

北京时间需要在世界标准时间上加8小时

1.1 Date类:

Date类概述:Date 代表了一个特定的时间,精确到毫秒

Date构造方法:

  • public Date() :电脑中的当前时间
  • public Date(long date) :从计算机时间原点开始,经过指定毫秒的时间

Date常用方法:

  • public long getTime()  获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
  • public void setTime(long time)  设置时间,传入参数是毫秒值

示例代码:

public static void main(String[] args) {
        //构造方法
        Date d1 = new Date();//当前电脑中的时间
        Date d2 = new Date(0L);//计算机时间原点
        Date d3 = new Date(1000L * 60*60);//计算机时间原点经过1小时的时间
        System.out.println(d3);//Thu Jan 01 09:00:00 CST 1970(北京时间加8小时)
        //常用方法getTime
        long time2 = d2.getTime();//从计算机时间原点到d2的时间,毫秒值
        long tiem3 = d3.getTime();//从计算机时间原点到d3的时间,毫秒值
        System.out.println(tiem3-time2);//3600000
        //常用方法setTime
        System.out.println("d1:"+d1);
        d2.setTime(d1.getTime());//将d2设置为当前时间
        d1.setTime(0L);//将d1设置为原点
        System.out.println(d2);
        System.out.println("d1:"+d1);
    }

1.2 SimpleDateFormat类:

概述:SimpleDateFormat可以对Date对象进行格式化和解析

构造方法:

  • public SimpleDateFormat()  使用默认模式和日期格式
  • public SimpleDateFormat(String pattern)  使用给定的模式和默认的日期格式

常用方法:

  • 格式化(从Date到String):public final String format(Date date)
  • 解析(从String到Date):public Date parse(String source)

示例代码:

public static void main(String[] args) throws ParseException {
       Date d = new Date();//当前时间
       //格式化:从 Date 到 String
       SimpleDateFormat sdf = new SimpleDateFormat();
       String s = sdf.format(d);//将Date对象以默认格式转换为字符串
       System.out.println(s);//2021/5/28 上午9:53

       SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       String s1 = sdf1.format(d);//将Date对象以自定义格式转换为字符串
       System.out.println(s1);//2021-05-28 09:56:21

       //解析:从 String 到 Date
       String s2 = "2048年08月09日 11:11:11";
       //pattern参数的格式必须和s2的格式相同
       SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
       Date date = sdf2.parse(s2);//将String转换为Date对象
       System.out.println(date);//Sun Aug 09 11:11:11 CST 2048
   }

2. JDK8新增日期类

JDK8将Date拆分成了3个类:

  • LocalDate:表示日期(年月日)
  • LocalTime:表示时间(时分秒)
  • LocalDateTime:表示日期+时间 (年月日时分秒)

LocalDateTime创建方法:

  • public static LocalDateTime now()  获取当前系统时间
  • public static LocalDateTime of(年, 月 , 日, 时, 分, 秒)  自定义

LocalDateTime获取方法:

方法名说明
public int getYear()获取年
public int getMonthValue()获取月份(1-12)
public int getDayOfMonth()获取月份中的第几天(1-31)
public int getDayOfYear()获取一年中的第几天(1-366)
public DayOfWeek getDayOfWeek()获取星期
public int getMinute()获取分钟
public int getHour()获取小时

转换方法:

  • public LocalDate toLocalDate ()  转换成为一个LocalDate对象
  • public LocalTime toLocalTime ()  转换成为一个LocalTime对象

LocalDateTime格式化和解析:

  • public String format (日期格式化对象)
  • public LocalDateTime parse (准备解析的字符串, 日期格式化对象)
  • JDK8的日期格式化器(DateTimeFormatter): 使用指定的日期模板获取一个日期格式化对象

示例代码:

​
public static void main(String[] args) {
        //获取当前系统时间
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);//2021-05-28T18:35:16.530775300
        //自定义LocalDateTime对象
        LocalDateTime localDateTime = LocalDateTime.of(2020,7,1,6,30,30);
        //定义一个日期格式化器
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        //格式化LocalDateTime对象,转换为String类型
        String s = localDateTime.format(pattern);
        System.out.println(s);
        
        //把一个日期字符串解析成为一个LocalDateTime对象
        String s1 = "2020年11月12日 13:14:15";
        //parse为静态方法
        LocalDateTime parse = LocalDateTime.parse(s1,pattern);
        System.out.println(parse);//2020-11-12T13:14:15

    }

​

LocalDateTime增加或者减少时间的方法:

方法名说明
public LocalDateTime plusYears (long years)添加或者减去年
public LocalDateTime plusMonths(long months)添加或者减去月
public LocalDateTime plusDays(long days)添加或者减去日
public LocalDateTime plusHours(long hours)添加或者减去时
public LocalDateTime plusMinutes(long minutes)添加或者减去分
public LocalDateTime plusSeconds(long seconds)添加或者减去秒
public LocalDateTime plusWeeks(long weeks)添加或者减去周

LocalDateTime减少或者增加时间的方法:

方法名说明
public LocalDateTime minusYears (long years)减去或者添加年
public LocalDateTime minusMonths(long months)减去或者添加月
public LocalDateTime minusDays(long days)减去或者添加日
public LocalDateTime minusHours(long hours)减去或者添加时
public LocalDateTime minusMinutes(long minutes)减去或者添加分
public LocalDateTime minusSeconds(long seconds)减去或者添加秒
public LocalDateTime minusWeeks(long weeks)减去或者添加周

LocalDateTime修改方法:

方法名说明
public LocalDateTime withYear(int year)直接修改年
public LocalDateTime withMonth(int month)直接修改月
public LocalDateTime withDayOfMonth(int dayofmonth)直接修改日期(一个月中的第几天)
public LocalDateTime withDayOfYear(int dayOfYear)直接修改日期(一年中的第几天)
public LocalDateTime withHour(int hour)直接修改小时
public LocalDateTime withMinute(int minute)直接修改分钟
public LocalDateTime withSecond(int second)直接修改秒

3. 时间间隔对象

Period:

方法名说明
public static Period between(开始时间,结束时间)计算两个“日期"的间隔
public int getYears()获得这段时间的年数
public int getMonths()获得此期间的总月数
public int getDays()获得此期间的天数
public long toTotalMonths()获取此期间的总月数

示例代码:

public static void main(String[] args) {
        LocalDate localDate1 = LocalDate.of(2021, 12, 26);
        LocalDate localDate2 = LocalDate.now();
        //传入参数为LocalDate类型
        Period between = Period.between(localDate2, localDate1);
        System.out.println(between);//P6M28D
        System.out.println(between.getYears());//0
        System.out.println(between.getMonths());//6
        System.out.println(between.getDays());//28
        System.out.println(between.toTotalMonths());//6
    }

Duration:

方法名说明
public static Duration between(开始时间,结束时间)计算两个“时间"的间隔
public long toSeconds()获得此时间间隔的秒
public int toMillis()获得此时间间隔的毫秒
public int toNanos()获得此时间间隔的纳秒

示例代码:

public static void main(String[] args) {
        LocalTime localTime1 = LocalTime.now();
        LocalTime localTime2 = LocalTime.of(23, 56, 31);
        //传入参数为Temporal接口的实现类,主要包括 LocalDate、 LocalDateTime、LocalTime等
        Duration d = Duration.between(localTime1, localTime2);
        System.out.println(d);//PT4H41M44.493103S
        System.out.println(d.toSeconds());
        System.out.println(d.toMillis());
        System.out.println(d.toNanos());
    }

 

如有错误欢迎留言评论,及时更正。 5月28日  羽露风

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

羽露风

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

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

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

打赏作者

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

抵扣说明:

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

余额充值