当前位置: 代码网 > it编程>编程语言>Java > Java中LocalDate,LocalDateTime,Date,日期串相互转换

Java中LocalDate,LocalDateTime,Date,日期串相互转换

2026年02月08日 Java 我要评论
1. 获取当前时间 xxx.now()public void testcurrentdate() { localdate curlocaldate = localdate.now(); syste

1. 获取当前时间 xxx.now()

public void testcurrentdate() {
  localdate curlocaldate = localdate.now();
  system.out.println("地心侠士: "+curlocaldate.tostring());
  localtime curloacaltime = localtime.now();
  system.out.println("地心侠士: "+curloacaltime.tostring());
  localdatetime curlocaldatetime = localdatetime.now();
  system.out.println("地心侠士: "+curlocaldatetime.tostring());
  instant curinstant = instant.now();
  system.out.println("地心侠士: "+ curinstant.tostring());
}

输出结果

地心侠士: 2026-02-04
地心侠士: 17:15:59.715639800
地心侠士: 2026-02-04t17:15:59.715639800
地心侠士: 2026-02-04t09:15:59.715639800z

说明:

  • localdate,localtime,localdatetime都是当前时区对应日期或时间
  • instant获取到的是utc+0 日期和时间
  • z 代表零时区(utc+0) t 日期和时间的分割符

2. 时间戳转成localdatetime

public void testtimestamp() {
  long timestamp = 1769577638767l;
  instant instant = instant.ofepochmilli(timestamp);
  system.out.println("地心侠士: " + instant.tostring());
  localdatetime cvlocaldate = localdatetime.ofinstant(instant, zoneid.systemdefault());
  system.out.println("地心侠士: " + cvlocaldate.tostring());
  localdatetime localdatet1 = localdatetime.ofepochsecond(timestamp / 1000, 0, zoneoffset.ofhours(8));
  system.out.println("地心侠士: " + localdatet1.tostring());
}

输出结果

地心侠士: 2026-01-28t05:20:38.767z
地心侠士: 2026-01-28t13:20:38.767
地心侠士: 2026-01-28t13:20:38

说明:

  • 使用方法 localdatetime.ofinstant 或者 localdatetime.ofepochsecond
  • 使用 ofinstant ,毫秒时间戳可以直接使用
  • 使用 ofepochsecond ,毫秒时间戳需要除以1000
  • ofinstant 使用 zoneid.systemdefault() 获取当时区
  • ofepochsecond 使用 zoneoffset.ofhours(8) 指定需要的时区
  • zoneid.systemdefault() 当前时区,等同的有 zoneid.of("asia/shanghai") zoneid.of("gmt+8") zoneid.of("utc+08:00") zoneid.of("+08:00")

3. 时间串转换成localdatetime

public void testdatestr() {
  datetimeformatter df = datetimeformatter.ofpattern("yyyy-mm-dd hh:mm:ss.sss");
  string datestr = "2026-01-28 18:20:38.767";
  localdatetime localdatetime = localdatetime.parse(datestr, df);
  system.out.println("地心侠士: " + localdatetime.tostring());
  localdatetime defaultparse = localdatetime.parse("2026-01-28t18:20:38");
  system.out.println("地心侠士: " + defaultparse.tostring());
  datetimeformatterbuilder dfbuild = new datetimeformatterbuilder();
  datetimeformatter dynmicdf = dfbuild.appendpattern("yyyy-mm-dd")
  		.optionalstart()
  		.appendliteral(' ')
  		.optionalend()
  		.optionalstart()
  		.appendliteral('t')
  		.optionalend()
  		.appendpattern("hh:mm:ss")
  		.toformatter();
  localdatetime dynamic1 = localdatetime.parse("2026-01-28t18:20:38", dynmicdf);
  system.out.println("地心侠士: " + dynamic1.tostring());
  localdatetime dynamc2 = localdatetime.parse("2026-01-28 18:20:38", dynmicdf);
  system.out.println("地心侠士: " + dynamc2.tostring());
}

输出结果:

地心侠士: 2026-01-28t18:20:38.767
地心侠士: 2026-01-28t18:20:38
地心侠士: 2026-01-28t18:20:38
地心侠士: 2026-01-28t18:20:38

说明:

  • 使用方法localdatetime.parse结合datetimeformatter转换
  • 默认转换格式为yyyy-mm-ddthh:mm:ss
  • 使用 datetimeformatterbuilder 可以实现多种日期串转换成localdatetime

4. localdatetime转换成成localdate和date

public void testdateconvert() {
  localdatetime dt = localdatetime.now();
  system.out.println("地心侠士 " + dt.tostring());
  system.out.println("localdatetime=>localdate");
  localdate localdate = dt.tolocaldate();
  system.out.println("地心侠士 " + localdate.tostring());
  system.out.println("localdatetime=>date");
  instant instant = dt.toinstant(zoneoffset.ofhours(8));
  date d = date.from(instant);
  system.out.println("地心侠士 " + d);
}

输出结果:

地心侠士 2026-02-06t19:09:35.092605300
localdatetime=>localdate
地心侠士 2026-02-06
localdatetime=>date
地心侠士 fri feb 06 19:09:35 cst 2026

5. date 转换成localdatetime

public void testdateconvert2() {
  date date = new date();
  system.out.println("地心侠士 " + date.tostring());
  system.out.println("date=>localdatetime");
  instant instant = date.toinstant();
  localdatetime lcd = localdatetime.ofinstant(instant, zoneid.systemdefault());
  system.out.println("地心侠士 " + lcd.tostring());
}

输出结果:

地心侠士 fri feb 06 19:15:38 cst 2026
date=>localdatetime
地心侠士 2026-02-06t19:15:38.122

6. 北京时间时区表示

public void testzone() {
  zoneid zonidgmt8 = zoneid.of("gmt+8");
  localdatetime gmt8 = localdatetime.ofinstant(instant.now(), zonidgmt8);
  system.out.println("地心侠士: " + gmt8.tostring());
  zoneid zonidas = zoneid.of("asia/shanghai");
  localdatetime as = localdatetime.ofinstant(instant.now(), zonidas);
  system.out.println("地心侠士: " + as.tostring());
  zoneid zonidutc8 = zoneid.of("utc+08:00");
  localdatetime utc = localdatetime.ofinstant(instant.now(), zonidutc8);
  system.out.println("地心侠士: " + utc.tostring());
  zoneid zonid8 = zoneid.of("+08:00");
  localdatetime ad8= localdatetime.ofinstant(instant.now(), zonid8);
  system.out.println("地心侠士: " + ad8.tostring());
}

输出结果:

地心侠士: 2026-02-06t18:35:26.921795200
地心侠士: 2026-02-06t18:35:26.928776600
地心侠士: 2026-02-06t18:35:26.928776600
地心侠士: 2026-02-06t18:35:26.928776600

到此这篇关于java中localdate,localdatetime,date,日期串相互转换的文章就介绍到这了,更多相关java localdate,localdatetime,date转换内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com