java实现Date、LocalDateTime类型参数获取三天前、一个月前日期

Date、LocalDateTime类型数据该日期三天前或一个月前的日期

1.首先创建一个日期对象

Date createTime = new Date();
// 转换为java.time.ZonedDateTime
ZonedDateTime zonedDateTime = createTime.toInstant().atZone(ZoneId.systemDefault());
// 转换为java.time.LocalDate,计算前三天的日期
LocalDate dateBeforeDay = zonedDateTime.toLocalDate().minusDays(3);
LocalDate dateBeforeMonth = zonedDateTime.toLocalDate().minusMonths(1);
LocalDate dateBeforeWeek = zonedDateTime.toLocalDate().minusWeeks(1);
LocalDate dateBeforeYear = zonedDateTime.toLocalDate().minusYears(1);
System.out.println("当前日期 = " + zonedDateTime.toLocalDate());
//输出结果
System.out.println("三天前日期 = " + dateBeforeDay);
System.out.println("一个月前日期 = " + dateBeforeMonth);
System.out.println("一周前日期 = " + dateBeforeWeek);
System.out.println("一年前日期 = " + dateBeforeYear);

在这里插入图片描述
2.若日期类型为LocalDateTime,先创建对象

LocalDateTime createTime = LocalDateTime.now();
System.out.println("当前日期 = " + createTime);
LocalDateTime localDateDay = createTime.minusDays(3);
LocalDateTime localDateMonth = createTime.minusMonths(1);
LocalDateTime localDateWeek = createTime.minusWeeks(1);
LocalDateTime localDateYear = createTime.minusYears(1);
//输出结果
System.out.println("三天前日期 = " + localDateDay);
System.out.println("一个月前日期 = " + localDateMonth);
System.out.println("一周前日期 = " + localDateWeek);
System.out.println("一年前日期 = " + localDateYear);

在这里插入图片描述
LocalDateTime类型可以精确到时分秒毫秒,但日期和时间中间有个字母 ‘T’,我们也可以通过字符串中替换函数 ‘replace’ 给替换掉

System.out.println("当前日期 = " + createTime.toString().replace("T"," "));

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TimeFormatUtil { public static String getInterval(Date createAt) { // 定义最终返回的结果字符串。 String interval = null; long millisecond = new Date().getTime() - createAt.getTime(); long second = millisecond / 1000; if (second <= 0) { second = 0; } //*--------------微博体(标准) if (second == 0) { interval = "刚刚"; } else if (second < 30) { interval = second + "秒以"; } else if (second >= 30 && second < 60) { interval = "半分钟"; } else if (second >= 60 && second < 60 * 60) {//大于1分钟 小于1小时 long minute = second / 60; interval = minute + "分钟"; } else if (second >= 60 * 60 && second < 60 * 60 * 24) {//大于1小时 小于24小时 long hour = (second / 60) / 60; if (hour <= 3) { interval = hour + "小时"; } else { interval = "今天" + getFormatTime(createAt, "HH:mm"); } } else if (second >= 60 * 60 * 24 && second <= 60 * 60 * 24 * 2) {//大于1D 小于2D interval = "昨天" + getFormatTime(createAt, "HH:mm"); } else if (second >= 60 * 60 * 24 * 2 && second <= 60 * 60 * 24 * 7) {//大于2D小时 小于 7天 long day = ((second / 60) / 60) / 24; interval = day + "天"; } else if ( second <= 60 * 60 * 24 * 365 && second >= 60 * 60 * 24 * 7) {//大于7天小于365天 interval = getFormatTime(createAt, "MM-dd HH:mm"); } else if (second >= 60 * 60 * 24 * 365) {//大于365天 interval = getFormatTime(createAt, "yyyy-MM-dd HH:mm"); } else { interval = "0"; } return interval; } public static String getFormatTime(Date date, String Sdf) { return (new SimpleDateFormat(Sdf)).format(date); } public static void main(String[] args) { try { System.out.println(getInterval(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2014-08-03 12:12:12"))); } catch (ParseException e) { e.printStackTrace(); } } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值