获取当日的日期三个月后的日期

使用 java.time.LocalDate 类进行计算

import java.time.LocalDate;

public class ThreeMonthsLaterExample {
    public static void main(String[] args) {
        // 获取当前日期
        LocalDate currentDate = LocalDate.now();

        // 添加三个月
        LocalDate threeMonthsLater = currentDate.plusMonths(3);

        // 获取三个月后的年、月、日
        int year = threeMonthsLater.getYear();
        int month = threeMonthsLater.getMonthValue();
        int day = threeMonthsLater.getDayOfMonth();

        // 输出日期
        System.out.println("当日三个月后的日期为:" + year + "-" + month + "-" + day);
        System.out.println(new Date(year,month,day));    
    }
}

在上述代码中,我们首先使用 LocalDate.now() 获取当前日期。然后,使用 plusMonths(3) 方法将三个月添加到当前日期上,得到了三个月后的日期。最后,我们从三个月后的日期中获取年、月、日,并将其输出到控制台。

当你运行上述代码时,你将看到输出结果为当日三个月后的日期。

运行结果:

当日三个月后的日期为:2024-2-23
Sun Mar 23 00:00:00 CST 3924

后续补充:

上面使用的 Date 类的构造函数已经被标记为过时的,不推荐使用,因为它的年份是基于相对于1900年的偏移量。另外,构造函数中的月份是从0开始计数的(即0表示一月,1表示二月,以此类推),这也会导致错误的日期。

LocalDate转为date

Date date =

Date.from(threeMonthsLater.atStartOfDay(ZoneId.systemDefault()).toInstant())

;

新实例:

	public static void main(String[] args) {
		// 获取当前日期
		LocalDate currentDate = LocalDate.now();

		// 添加三个月
		LocalDate threeMonthsLater = currentDate.plusMonths(3);

		// 获取三个月后的年、月、日
		int year = threeMonthsLater.getYear();
		int month = threeMonthsLater.getMonthValue();
		int day = threeMonthsLater.getDayOfMonth();

		// 输出日期
		System.out.println("当日三个月后的日期为:" + year + "-" + month + "-" + day);
		System.out.println(new Date(year,month,day));
		System.out.println(threeMonthsLater);

		Date date = Date.from(threeMonthsLater.atStartOfDay(ZoneId.systemDefault()).toInstant());
		System.out.println(date);

	}

运行结果:

当日三个月后的日期为:2024-3-1
Tue Apr 01 00:00:00 CST 3924
2024-03-01
Fri Mar 01 00:00:00 CST 2024

localDateTime类的now()方法获取当前日期和时间

我们可以使用 LocaleDateTime 类的 now() 方法获得当前的日期-时间。它以 YYYY-MM-DD-hh-mm-ss.zz 格式返回日期和时间,比如 2020-09-22T14:39:33.889798

为了使它更容易阅读,我们将使用 DateTimeFormatter.ofPattern(pattern),它需要一个日期-时间模式,我们可以根据我们的需要定制。

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
  public static void main(String[] args) {
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
    System.out.println("yyyy/MM/dd HH:mm:ss-> " + dtf.format(LocalDateTime.now()));

    DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yy/MM/dd HH:mm:ss");
    System.out.println("yy/MM/dd HH:mm:ss-> " + dtf2.format(LocalDateTime.now()));

    DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy/MMMM/dd HH:mm:ss");
    System.out.println("yyyy/MMMM/dd HH:mm:ss-> " + dtf3.format(LocalDateTime.now()));

    DateTimeFormatter dtf4 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
    System.out.println("yyyy/MM/dd HH:mm-> " + dtf4.format(LocalDateTime.now()));

    DateTimeFormatter dtf5 = DateTimeFormatter.ofPattern("yyyy/MM/dd hh:mm");
    System.out.println("yyyy/MM/dd hh:mm:ss-> " + dtf5.format(LocalDateTime.now()));
  }
}

输出:

yyyy/MM/dd HH:mm:ss-> 2020/09/22 15:07:01
yy/MM/dd HH:mm:ss-> 20/09/22 15:07:01
yyyy/MMMM/dd HH:mm:ss-> 2020/September/22 15:07:01
yyyy/MM/dd HH:mm-> 2020/09/22 15:07
yyyy/MM/dd hh:mm:ss-> 2020/09/22 03:07

 

ZonedDateTime.now() 来获取带有时区的日期时间

时区是日期和时间的一个重要部分,我们可以使用 ZonedDateTime.now() 来获取带有时区的日期时间。我们可以使用 ZonedDateTime.now() 获得带有时区的日期时间。

这还不是全部,因为我们可以通过在 ZonedDateTime.now() 中传递 ZoneId 参数来获得每个时区的时间。

请看下面的例子。

import java.time.ZonedDateTime;

public class Main {
  public static void main(String[] args) {
    System.out.println(ZonedDateTime.now());

    System.out.println("Get current timezone " + ZonedDateTime.now().getZone());

    System.out.println(
        "Get time of different timezone: " + ZonedDateTime.now(ZoneId.of("America/New_York")));
  }
}

输出:

2020-09-22T15:53:32.635585+05:30[Asia/Kolkata]
Get current timezone Asia/Kolkata
Get time of different timezone: 2020-09-22T06:23:32.643391-04:00[America/New_York]

 Calendar.getInstance() 返回一个带有当前日期和时间

另一种获取当前日期/时间的方法是使用 Calendar.getInstance() 返回一个带有当前日期和时间的 Calendar 对象,可以使用 getTime() 方法将其转换为 Date/Time 格式。

我们可以看到示例中显示了日期时间。

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
  public static void main(String[] args) {
    String timeStamp =
        new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime());

    System.out.println(timeStamp);
  }
}

输出:

2020/09/22 15:59:45

希望这个示例对你有所帮助!如果你有其他问题,请随时提问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java小王子呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值