当前位置: 首页 > 面试题库 >

从压延机获取日期提前18年

那绪
2023-03-14
问题内容

我需要获取从现在起18年的完整日期(dd / mm / yyyy)。我使用代码作为Calendar calc =
Calendar.getInstance(); calc.add(Calendar.YEAR,-18);
可以在年份的18年前检索,而不是月份或日期。即使在每月第1天这样的极端情况下,我也需要比当前日期早18年的一天。例子1-06-2015当前日期应该是31-05-1997。需要注意的是我需要Java6中的代码


问题答案:

在Java中,日期值只是从某个固定时间点开始的毫秒数,相关类没有携带自己可以更改的格式,这就是日期/时间格式化程序的用途

从您的示例中,您基本上忽略了以下事实:更改任何Calendar字段都会影响所有其他字段,例如…

Calendar cal = Calendar.getInstance();
cal.set(2015, Calendar.JUNE, 01); // Comment this out for today...
cal.add(Calendar.YEAR, -18);
cal.add(Calendar.DATE, -1);
Date date = cal.getTime();
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(date));

哪个输出

31/05/1997

但是,我建议使用Java 8的新Time API或Joda-Time

Java 8时间API

LocalDate ld = LocalDate.now();
ld = ld.minusYears(18).minusDays(1);
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(ld));

哪个输出

26/06/1997

边缘盒…

LocalDate ld = LocalDate.of(2015, Month.JUNE, 1);
ld = ld.minusYears(18).minusDays(1);
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(ld));

哪个输出

31/05/1997

乔达时间

LocalDate ld = new LocalDate();
ld = ld.minusYears(18).minusDays(1);
System.out.println(DateTimeFormat.forPattern("dd/MM/yyyy").print(ld));

哪个输出

26/06/1997

边缘盒…

LocalDate ld = new LocalDate(2015, DateTimeConstants.JUNE, 1);
ld = ld.minusYears(18).minusDays(1);
System.out.println(DateTimeFormat.forPattern("dd/MM/yyyy").print(ld));

哪个输出

31/05/1997


 类似资料:
  • 问题内容: 我们可以使用下面的行获取一年中的日期。 但是,我们如何获得一年中的某天的日期呢? 问题答案: 如果您知道年份,则可以获取DateComponents date属性,如下所示: 或使用DateFormatter

  • 我有一个通过Netty.io创建的简单套接字服务器,当我从终端写东西时,一切都像一个魅力一样工作。但是我也有一个自定义套接字客户端,不使用netty.io,我如何从网络服务器获取数据?这是我的网络处理器: 这是我的客户端套接字类: 我不能从行.有其他方法吗?

  • 问题内容: 我想100天前从13年4月8日开始作为日期。 如何使用pl / sql执行此操作? 问题答案: 假设情况是您所处的字符串。因此,您需要将其转换为using函数,然后简单地减去100个文字。 的SQL 2 from dual 3 / RES 29-12-2012 PL / SQL 2 l_res_date date; 3 l_in_date varchar2(11) := ‘08-APR

  • 问题内容: 我有一个PHP日期格式,我想以相同格式获取明天日期,例如。 PHP怎么可能? 问题答案: 使用日期时间 要么: 要么: 或在PHP 5.4+中:

  • 问题内容: 我下面有日期数组 并想知道 最近的日期, 例如:最接近今天的日期。 我怎样才能做到这一点? 问题答案: 循环执行,将值转换为日期,然后将最新的值存储在var中。 诸如此类的东西…您就知道了如果您想获得今天之前的最新信息:

  • 问题内容: 我从ResultSet获取Date对象时遇到问题。在数据库中,它具有一个值(例如2014-08-01),并且从resultSet获取它之后,它具有另一个值(2014-08-31)。我知道ResultSet的getDate方法返回java.sql.Date,但是我尝试了一些解决方案,例如: 或 但问题是相同的。如果尝试 ,则抛出NullPointerException。 有人可以解释吗?