Java8中的时区日期时间怎么处理
今天小编给大家分享一下Java8中的时区日期时间怎么处理的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
我同时也发现,这三个类没有任何时区相关的信息,但也不能说它们没处理时区,而只能说它们有选择的隐藏了时区的处理。它们内部会使用操作系统当前的时区。
以此同时,Java 在
java.time
包中也提供了几个类用于处理需要关注时区的日期时间 API。它们是 java.time.ZonedDateTime
和 java.time.ZoneId
。前者用于处理需要时区的日期时间,后者用于处理时区。
ZonedDateTime
和 LocalDateTime
类似,几乎有着相同的 API。从某些方面说,ZonedLocalTime
如果不传递时区信息,那么它会默认使用操作系统的时区,这样,结果其实和 LocalDateTime
是类似的。比如,我们可以使用
ZonedDateTime
的 now()
方法返回当前时区 ( 操作系统时区 ) 的日期时间,调用 parse()
方法可以将一个包含了时区信息的字符串格式的日期时间转化为一个 ZonedDateTime 实例。Java8Tester.java
import java.time.ZonedDateTime;
public class Java8Tester {
public static void main(String args[]) {
Java8Tester tester = new Java8Tester();
tester.run();
}
public void run() {
ZonedDateTime now = ZonedDateTime.now();
System.out.println("当前日期时间是:" + now);
ZonedDateTime datetime = ZonedDateTime.parse("2012-10-10T21:58:00+08:00");
System.out.println("日期时间是:" + datetime);
}
}
运行结果如下
当前日期时间是:2018-10-08T22:21:56.806597+08:00[Asia/Shanghai] 日期时间是:2012-10-10T21:58+08:00
我们还可以调用
ZonedDateTime
对象的 toLocalDate()
和 toLocalTime()
方法将获取该实例的转换为本地的日期和时间import java.time.LocalTime;
import java.time.LocalDate;
import java.time.ZonedDateTime;
public class Java8Tester {
public static void main(String args[]) {
Java8Tester tester = new Java8Tester();
tester.run();
}
public void run() {
ZonedDateTime now = ZonedDateTime.now();
System.out.println("当前日期时间是:" + now);
LocalDate date = now.toLocalDate();
System.out.println("本地日期是:" + now);
LocalTime time = now.toLocalTime();
System.out.println("本地时间是:" + time);
}
}
运行结果如下
当前日期时间是:2022-10-08T22:28:10.389487+08:00[Asia/Shanghai] 本地日期是:2022-10-08T22:28:10.389487+08:00[Asia/Shanghai] 本地时间是:22:28:10.389487
P.S 这个返回值好诡异,为啥
toLocalDate()
还返回了时间?处理时区
时区相关的信息,我们可以使用
ZoneId
类来处理。比如可以调用
ZoneId
类的静态方法 systemDefault()
返回当前的时区。import java.time.ZonedDateTime;
import java.time.ZoneId;
public class Java8Tester {
public static void main(String args[]) {
Java8Tester tester = new Java8Tester();
tester.run();
}
public void run() {
ZoneId currentZone = ZoneId.systemDefault();
System.out.println("当前时区是: " + currentZone);
}
}
运行结果如下
当前时区是: Asia/Shanghai
我们还可以调用
ZonedDateTime
实例的 getZone()
方法获取实例所在的时区import java.time.ZonedDateTime;
import java.time.ZoneId;
public class Java8Tester {
public static void main(String args[]) {
Java8Tester tester = new Java8Tester();
tester.run();
}
public void run() {
ZonedDateTime now = ZonedDateTime.now();
System.out.println("当前时区是: " + now.getZone());
}
}
运行结果如下
当前时区是: Asia/Shanghai
相关内容
这些是最新的
热门排行
- THINKPHP5+GatewayWorker+Workerman 开发在线客服系统
- 在手机浏览器网页中点击链接跳转到微信界面的方法
- 尊云网站目录系统 ThinkPHP5网站分类目录程序 v2.2.221011
- CentOS 7安装shadowsock(一键安装脚本)
- AdminTemplate 基于LayUI 2.4.5实现的网站后台管理模板
- 用NW.js(node-webkit)开发多平台的桌面客户端
- PHP生成随机昵称/用户名
- THINKPHP5网站分类目录程序 尊云网站目录系统
- 织梦(DEDECMS)微信支付接口 微信插件
- 基于LayUI开发的 网站后台管理模板 BeginnerAdmin
- 响应式后台网站模板 - AMA.ADMIN
- layuiAdmin后台管理模板 Iframe版
- LayUI 1.0.9 升级 至 LayUI 2.1.4 方法
- 简洁清爽的会员中心模板
- jQuery幸运大转盘抽奖活动代码