JDK8时间相关类超详细总结 1(含多个实例)


一、前言

在上一篇文章中讲述了JDK7的时间相关类,本文将讲述JDK8中的时间相关类,这一块的知识点难度不大,但是有很多种方法,这篇文章就是做一个总结

二、ZoneId类

1.获取所有时区名称

通过这个方法,可以看到目前所以时区的名字

import java.time.ZoneId;
import java.util.Set;

public class demo1 {
    public static void main(String[] args) {
    
        Set<String> zoneIds = ZoneId.getAvailableZoneIds();
        
        System.out.println("所有时区:");
        System.out.println(zoneIds);
      
    }
}

所有时区:
[Asia/Aden, America/Cuiaba, Etc/GMT+9, Etc/GMT+8, Africa/Nairobi, America/Marigot, Asia/Aqtau, Pacific/Kwajalein, America/El_Salvador, Asia/Pontianak, Africa/Cairo, Pacific/Pago_Pago, Africa/Mbabane, Asia/Kuching, Pacific/Honolulu, Pacific/Rarotonga, America/Guatemala, Australia/Hobart, Europe/…

2.获取时区总个数

import java.time.ZoneId;
import java.util.Set;

public class demo1 {
    public static void main(String[] args) {
    
        Set<String> zoneIds = ZoneId.getAvailableZoneIds();
        
        System.out.println("时区总个数:");
        System.out.println(zoneIds.size);
      
    }
}

时区总个数:
600

3.获取当前系统默认时区

我们位于中国,照理来说应该是北京时间,但是由于时区中没有 Asia/Beijing,所以默认时区是上海

import java.time.ZoneId;
import java.util.Set;

public class demo1 {
    public static void main(String[] args) {
    
        Set<String> zoneIds = ZoneId.getAvailableZoneIds();
        
		ZoneId zoneId = ZoneId.systemDefault();
		System.out.println("当前系统默认的时区是:");
		System.out.println(zoneId);
      
    }
}

当前系统默认的时区是:
Asia/Shanghai

4.获取指定时区

import java.time.ZoneId;
import java.util.Set;

public class demo1 {
    public static void main(String[] args) {
    
        Set<String> zoneIds = ZoneId.getAvailableZoneIds();
        
		ZoneId zoneId1 = ZoneId.of("America/Cuiaba");
        System.out.println(zoneId1);
      
    }
}

America/Cuiaba

三、时间戳

1.获取当前时间的Instant对象(标准时间)

import java.time.Instant;
public class demo1 {
    public static void main(String[] args) {
        
		Instant now = Instant.now();
		System.out.println(now);
      
    }
}

2023-01-13T10:02:56.303Z

2.根据(秒/毫秒/纳秒)获取Instant对象

import java.time.Instant;
public class demo1 {
    public static void main(String[] args) {
        
	Instant instant1 = Instant.ofEpochMilli(0L);
	System.out.println(instant1);
	
	Instant instant2 = Instant.ofEpochSecond(1L);
	System.out.println(instant2)
      
    }
}

1970-01-01T00:00:00z
1970-01-01T00:00:01Z

3.指定时区

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class demo1 {
    public static void main(String[] args) {
        
	ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
	System.out.println(time);
      
    }
}

2023-01-13T18:10:41.087+08:00[Asia/Shanghai]

4.判断调用者代表的时间是否在参数表示时间的前面

import java.time.Instant;
public class demo1 {
    public static void main(String[] args) {
        
	Instant instant1=Instant.ofEpochMilli(0L);
	Instant instant2 =Instant.ofEpochMilli(1000L);
	boolean result=instant1.isBefore(instant2);
	System.out.println(result);
      
    }
}

true

import java.time.Instant;
public class demo1 {
    public static void main(String[] args) {
    
        Instant instant1=Instant.ofEpochMilli(0L);
		Instant instant2 =Instant.ofEpochMilli(1000L);
		boolean result = instant1.isAfter(instant2);
		System.out.println(result);
      
    }
}

false

5.减少时间

这里我们先指定一个时间,再在这个指定的时间上减去一定的时间,来具体实现这个方法。为了展示效果,所以将指定时间也打印输出

import java.time.Instant;
public class demo1 {
    public static void main(String[] args) {
        
	Instant instant1 =Instant.ofEpochMilli(5000L);
	System.out.println(instant1); 

	Instant instant2 =instant1.minusSeconds(2);
	System.out.println(instant2);
      
    }
}

1970-01-01T00:00:05Z
1970-01-01T00:00:03Z

四、结语

接下来会继续分享有关于时区的一些时间类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Alita11101_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值