Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从日历日期开始提前18年_Java_Datetime_Datepicker - Fatal编程技术网

Java 从日历日期开始提前18年

Java 从日历日期开始提前18年,java,datetime,datepicker,Java,Datetime,Datepicker,我需要得到完整的日期(dd/mm/yyyy),从现在起18年。我使用代码作为 Calendar calc=Calendar.getInstance();计算添加(日历年,-18);在年前18年,而不是月份或日期。我需要比当前日期早18年的一天,即使是像任何月份的第一天这样的极端情况。示例1-06-2015是当前日期应为1997年5月31日。需要注意的是,我需要java6中的代码,我建议使用,因为它将使日期操作和数学变得非常简单。例如: DateTime futureDate = new Date

我需要得到完整的日期(dd/mm/yyyy),从现在起18年。我使用代码作为 Calendar calc=Calendar.getInstance();计算添加(日历年,-18);在年前18年,而不是月份或日期。我需要比当前日期早18年的一天,即使是像任何月份的第一天这样的极端情况。示例1-06-2015是当前日期应为1997年5月31日。需要注意的是,我需要java6中的代码,我建议使用,因为它将使日期操作和数学变得非常简单。例如:

DateTime futureDate = new DateTime();
futureDate.minusYears(18).minusDays(1);
futureDate.toDate(); // return a regular Date object
我建议使用,因为它将使日期操作和数学变得非常简单。例如:

DateTime futureDate = new DateTime();
futureDate.minusYears(18).minusDays(1);
futureDate.toDate(); // return a regular Date object

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

日历 从您的示例中,您基本上忽略了这样一个事实,即更改
日历的任何字段都会影响所有其他字段,例如

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
26/06/1997
31/05/1997
26/06/1997
31/05/1997
然而,我建议使用Java8的新时间API或Joda时间

Java8时间API 哪个输出

31/05/1997
26/06/1997
31/05/1997
26/06/1997
31/05/1997
边缘案例。。。 哪个输出

31/05/1997
26/06/1997
31/05/1997
26/06/1997
31/05/1997
乔达蒂姆 哪个输出

31/05/1997
26/06/1997
31/05/1997
26/06/1997
31/05/1997
边缘案例。。。 哪个输出

31/05/1997
26/06/1997
31/05/1997
26/06/1997
31/05/1997

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

日历 从您的示例中,您基本上忽略了这样一个事实,即更改
日历的任何字段都会影响所有其他字段,例如

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
26/06/1997
31/05/1997
26/06/1997
31/05/1997
然而,我建议使用Java8的新时间API或Joda时间

Java8时间API 哪个输出

31/05/1997
26/06/1997
31/05/1997
26/06/1997
31/05/1997
边缘案例。。。 哪个输出

31/05/1997
26/06/1997
31/05/1997
26/06/1997
31/05/1997
乔达蒂姆 哪个输出

31/05/1997
26/06/1997
31/05/1997
26/06/1997
31/05/1997
边缘案例。。。 哪个输出

31/05/1997
26/06/1997
31/05/1997
26/06/1997
31/05/1997


calc=Calendar.getInstance()计算添加(日历年,-18)
calc.add(Calendar.DATE,-1)
Date-Date=calc.getTime()
System.out.println(新的SimpleDataFormat(“dd/MM/yyyy”).format(日期)”)
如果可能的话,你应该利用Java 8的新时间API或Joda Time,它们通常比日历更简单,也不那么凌乱。上面的代码可以工作,但在像月1日这样的极端情况下,这不应该工作,你有没有一个例子说明它不能确认出生日期。我需要注册18岁以上的用户。
calc=Calendar.getInstance();
calc.add(Calendar.YEAR,-18);
calc.add(Calendar.DATE,-1);
DATE-DATE=calc.getTime();
System.out.println(新的简化格式(“dd/MM/yyyy”).format(DATE)”
如果可能的话,你应该利用Java 8的新时间API或Joda Time,它们通常比日历更简单,也不那么凌乱。上面的代码可以工作,但在像月1日这样的极端情况下,这不应该工作,你有没有一个例子,它不能确认出生日期。我需要注册用户超过18岁。这是-18岁,-1天,但正确的想法。添加一个Java8时间示例,赢得一张赞成票(挑剔的不是我)。您可能还希望强调OP目前的错误;)@然后,穆罕默德·沙默使用约达梯姆。此外,其他可能有这个问题的人可能很幸运,Java 8Joda Time只需要JDK 1.5+for v.2.0,正如MadProgrammer在下面向我们展示的那样。。。它在易用性方面显然是赢家。我们使用的是java 6而不是java 8,所以我们不能使用joda 8Joda仍然是2.x,正如我所说的,java 6的可用性是-18年-1天,但这是正确的想法。添加一个Java8时间示例,赢得一张赞成票(挑剔的不是我)。您可能还希望强调OP目前的错误;)@然后,穆罕默德·沙默使用约达梯姆。此外,其他可能有这个问题的人可能很幸运,Java 8Joda Time只需要JDK 1.5+for v.2.0,正如MadProgrammer在下面向我们展示的那样。。。我们使用的是Java6而不是Java8,所以我们不能使用Joda8Joda仍然是2.x,正如我所说的,Java6是可用的