Java中常用时间的一些相关方法
短信预约 -IT技能 免费直播动态提醒
前言
在我们java开发中,Date日期这个字段会被经常使用,比如获取当前系统的时间,获取上个月,上一年的时间,以及获取两个日期相差的时分秒数,或者对日期类型进行格式化,等等,等等,下面将给大家详细介绍下Java中常用时间的一些相关方法
一、获取当前时间的方式
public static void main(String[] args) {
//Date
Date now = new Date();
System.out.println(now);
//java8的时间
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
Calendar calendar = Calendar.getInstance();
Date time = calendar.getTime();
System.out.println(time);
System.out.println("年" + calendar.get(Calendar.YEAR));
System.out.println("月" + (calendar.get(Calendar.MONTH) + 1));
//joda time
DateTime dateTime = DateTime.now();
System.out.println(dateTime);
}
获取当前时间可以使用Date LocalDatetime Calendar Datetime
二、获取当月第n天
public static void main(String[] args) {
//建议使用Calendar 可以设置年月日时分秒
Calendar calendar = Calendar.getInstance();
////当月16
calendar.set(Calendar.DAY_OF_MONTH, 16);
System.out.println(calendar.getTime());
//当月16
DateTime now = DateTime.now();
DateTime dateTime = now.withDayOfMonth(16);
System.out.println(dateTime);
//当月14
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime.withDayOfMonth(14));
//1月11
System.out.println(localDateTime.withMonth(1).withDayOfMonth(11));
}
三、格式化为字符串
```
//使用SimpleDateFormat
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(new Date()));
//使用Calendar
Calendar calendar = Calendar.getInstance();
System.out.println(String.format("%s年%s月%s日%s时%s分%s秒", calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH),
calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND)));
LocalDateTime now = LocalDateTime.now();
String str = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(str);
```
四、加减时间(单位可以是秒,小时等)
public static void main(String[] args) {
Date now = new Date();
//加一小时
long time = now.getTime() + (60 * 60 * 1000);
System.out.println(new Date(time));
//引入Hutool 加一小时
System.out.println(DateUtil.offset(now, DateField.HOUR, 1));
//减一小时
System.out.println(DateUtil.offset(now, DateField.HOUR, -1));
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("加一小时" + localDateTime.plusHours(1));
System.out.println("减一小时" + localDateTime.minusHours(1));
DateTime dateTime = DateTime.now();
System.out.println(dateTime.plusHours(1));
System.out.println(dateTime.minusHours(1));
}
LocalDateTime和DateTime都自带增加和减少时间的方法
五、通过出生日期获取年龄
public static void main(String[] args) {
//时间1990-12-05
DateTime birthDay = DateTime.now().withYear(1990).withMonthOfYear(10).withDayOfMonth(23);
System.out.println(birthDay);
//获取相差得年 会进行月份和日期比较 如
Years years = Years.yearsBetween(birthDay, new DateTime());
System.out.println(years);
System.out.println(years.getYears());
}
还可以使用年份相减,再比较月,日的方法得到生日
六、判断两个时间段是否覆盖
public static void main(String[] args) {
DateTime now = DateTime.now();
DateTime start1 = now;
DateTime end1 = now.plusMinutes(1);
DateTime start2 = now.plusSeconds(50);
DateTime end2 = now.plusMinutes(2);
Interval interval1 = new Interval(start1, end1);
Interval interval2 = new Interval(start2, end2);
System.out.println(interval1.overlaps(interval2));
System.out.println(start1.getMillis() < end2.getMillis() && start2.getMillis() < end1.getMillis());
}
七、求两个时间间隔
public static void main(String[] args) {
DateTime now = DateTime.now();
//开始时间
Date startTime = now.toDate();
//结束时间
Date endTime = now.plusHours(1).toDate();
//1小时
System.out.println("开始时间与结束时间的时间间隔:" + DateUtil.between(startTime, endTime, DateUnit.SECOND));
long time = (endTime.getTime() - startTime.getTime()) / 1000;
System.out.println(time);
}
八、UTC时间与北京时间转换
public static void main(String[] args) throws ParseException {
Date now = new Date();
Date utcDate = bj2UTC(now);
//utc时间
System.out.println(utcDate);
//北京时间
System.out.println(utc2BJ(utcDate));
DateTime dateTime = DateTime.now().withDayOfMonth(1).withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0);
System.out.println(dateTime);
System.out.println(bj2UTC(dateTime.toDate()));
}
public static Date bj2UTC(Date date) {
if (date == null) {
return null;
}
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.of("-8"));
return Date.from(localDateTime.atOffset(ZoneOffset.UTC).toInstant());
}
public static Date utc2BJ(Date date) {
if (date == null) {
return null;
}
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.of("+8"));
return Date.from(localDateTime.atOffset(ZoneOffset.UTC).toInstant());
}
北京时间=UTC+8
总结
到此这篇关于Java中常用时间的一些相关方法的文章就介绍到这了,更多相关Java常用时间方法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341