94人参与 • 2024-08-04 • 设计模式
在java开发中,日期和时间的处理随着jdk的迭代发展经历了几个阶段,从最初的java.util.date和java.util.calendar到java 8(java.time包下的类)引入全新的日期时间api。现今在java中,jdk提供了多种日期和时间相关类,主要包括以下几种:
java.util.date:这是java最早提供的日期和时间类表示特定的时间瞬间,精确到毫秒。可以通过system.currenttimemillis()来获取当前时间的毫秒表示。
java.sql.date:这是为数据库应用设计的日期类,只包含年、月、日信息,不包含时间和时区信息。
java.sql.time:类似java.sql.date,但它只包含小时、分钟和秒信息。
java.sql.timestamp:这是一个比java.util.date更加精确的时间戳类,它可以精确到纳秒级别。
java.util.calendar和java.util.gregoriancalendar:calendar是一个抽象类,提供了日期和时间的计算方法。gregoriancalendar是calendar的一个具体实现,用于处理公历(格里高利历)。
java.time包中的类:在java 8及以上版本,推荐使用java.time包中的类来处理日期和时间,因为它们设计更加合理且功能更加强大。主要类包括localdate、localtime、localdatetime、zoneddatetime、instant、duration、period等。
现在,让我们来看一下这些日期对象之间的转换:
java.util.date转换为java.sql.date
java.util.date date = new java.util.date();
java.sql.date sqldate = new java.sql.date(date.gettime());
java.util.date转换为java.sql.time
java.util.date date = new java.util.date();
java.sql.time sqltime = new java.sql.time(date.gettime());
java.util.date转换为java.sql.timestamp
java.util.date date = new java.util.date();
java.sql.timestamp sqltimestamp = new java.sql.timestamp(date.gettime());
java.util.calendar转换为java.util.date
java.util.calendar calendar = java.util.calendar.getinstance();
java.util.date date = calendar.gettime();
java.util.date转换为java.util.calendar
java.util.date date = new java.util.date();
java.util.calendar calendar = java.util.calendar.getinstance();
calendar.settime(date);
java.time.localdatetime转换为java.util.date
java.util.date date = new java.util.date();
localdate localdate = date.toinstant()
.atzone(zoneid.systemdefault()).tolocaldate();
localdatetime localdatetime = date
.toinstant().atzone(zoneid.systemdefault()).tolocaldatetime();
localtime localtime = date
.toinstant().atzone(zoneid.systemdefault()).tolocaltime();
// 从java.time.localdate转换为java.util.date
date date1 = date.from(localdate.atstartofday()
.atzone(zoneid.systemdefault()).toinstant());
date date2 = date.from(localdatetime
.atzone(zoneid.systemdefault()).toinstant());
java.time计算时间差
localdatetime beforelocaldatetime = localdatetime.of(2024,4,1,8,5,1);
localdatetime afterlocaldatetime = localdatetime.of(2024,5,1,8,5,1);
// 时间差—天
long diffdays = chronounit.days.between(beforelocaldatetime, afterlocaldatetime);
// 时间差-小时
long diffhours = chronounit.hours.between(beforelocaldatetime, afterlocaldatetime);
// 时间差-分钟
long diffminutes = chronounit.minutes.between(beforelocaldatetime, afterlocaldatetime);
// 时间差-秒钟
long diffseconds = chronounit.seconds.between(beforelocaldatetime, afterlocaldatetime);
java.util.date计算时间差
date beforedate = new date();
// 当前时间后一天
date afterdate = new date(system.currenttimemillis() + 1000 * 60 * 60 * 24);
// 将date对象转换为calendar对象
calendar calendar1 = calendar.getinstance();
calendar1.settime(date1);
calendar calendar2 = calendar.getinstance();
calendar2.settime(date2);
// 计算两个时间相差的天数
int diffdays = calendar2.get(calendar.day_of_year) -
calendar1.get(calendar.day_of_year);
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论