之间的日期的Java天 [英] Days Between Dates Java
本文介绍了之间的日期的Java天的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是一对夫妇日子过,当我运行该程序。什么我做错了什么建议?
我知道有一个简单的方法来做到这一点,但对于这个我想展现找到之间的天所有的实际步骤。谢谢!
公共类DaysBetween {
公共静态无效的主要(字串[] args){
长months1 =的Long.parseLong(参数[0]);
长days1 =的Long.parseLong(参数[1]);
长YEAR1 =的Long.parseLong(参数[2]);
长个月2 =的Long.parseLong(参数[3]);
长days2 =的Long.parseLong(参数[4]);
长YEAR2 =的Long.parseLong(参数[5]);
长daysbetween = 0;
长leapyearcounter = 0;
布尔leapyear1 = FALSE;
布尔leapyear2 = FALSE;
布尔valid1 = TRUE;
布尔valid2 = TRUE;
INT较早= 0;
//这个测试,看看哪个日期早
如果(YEAR1 == YEAR2){
如果(months1 ==个月2){
如果(days1 == days2){
daysbetween = daysbetween;
}否则如果(days1< days2){
较早= 1;
}
}否则如果(months1<个月2){
较早= 1;
}
}否则如果(YEAR1< YEAR2){
较早= 1;
}
//此切换日期取决于哪一个较早
开关(早期){
案例1:months1 =的Long.parseLong(参数[0]);
days1 =的Long.parseLong(参数[1]);
YEAR1 =的Long.parseLong(参数[2]);
个月2 =的Long.parseLong(参数[3]);
days2 =的Long.parseLong(参数[4]);
YEAR2 =的Long.parseLong(参数[5]);
打破;
默认:
months1 =的Long.parseLong(参数[3]);
days1 =的Long.parseLong(参数[4]);
YEAR1 =的Long.parseLong(参数[5]);
个月2 =的Long.parseLong(参数[0]);
days2 =的Long.parseLong(参数[1]);
YEAR2 =的Long.parseLong(参数[2]);
打破;
}
//这部分测试中,如果较早的日期是有效的
如果((YEAR1%4 == 0)及及(YEAR1%100 = 0)||(YEAR1%400 == 0)!){
leapyear1 = TRUE;
}
如果((leapyear1 ==真)及及(months1 == 2)){
如果(days1&其中; = 29&安培;&安培; days1> = 1){
valid1 = TRUE;
}
}否则如果((leapyear1 ==假)及及(months1 == 2)){
如果(days1&其中; = 28&安培;&安培; days1> = 1){
valid1 = TRUE;
}
}
如果(months1!= 2){
如果(months1&所述; 8){
如果(months1%2!= 0){
如果(days1&其中; = 31&安培;&安培; days1> = 1){
valid1 = TRUE;
} 其他 {
valid1 = FALSE;
}
}否则,如果(months1%2 == 0){
如果(days1&其中; = 30&安培;&安培; days1> = 1){
valid1 = TRUE;
} 其他 {
valid1 = FALSE;
}
}
}否则如果(months1→8){
如果(months1%2!= 0){
如果(days1&其中; = 30&安培;&安培; days1> = 1){
valid1 = TRUE;
} 其他 {
valid1 = FALSE;
}
}否则,如果(months1%2 == 0){
如果(days1&其中; = 31&安培;&安培; days1> = 1){
valid1 = TRUE;
} 其他 {
valid1 = FALSE;
}
}
}
}
//这部分测试中,如果日后是否有效
如果((YEAR2%4 == 0)及及(YEAR2%100 = 0)||(YEAR2%400 == 0)!){
leapyear2 = TRUE;
}
如果((leapyear2 ==真)及及(个月2 == 2)){
如果(days2&其中; = 29&安培;&安培; days2> = 1){
valid2 = TRUE;
}
}否则如果((leapyear2 ==假)及及(个月2 == 2)){
如果(days2&其中; = 28&安培;&安培; days2> = 1){
valid2 = TRUE;
}
}
如果(个月2!= 2){
如果(个月2&所述; 8){
如果(个月2%2!= 0){
如果(days2&其中; = 31&安培;&安培; days2> = 1){
valid2 = TRUE;
} 其他 {
valid2 = FALSE;
}
}否则,如果(个月2%2 == 0){
如果(days2&其中; = 30&安培;&安培; days2> = 1){
valid2 = TRUE;
} 其他 {
valid2 = FALSE;
}
}
}否则如果(个月2→8){
如果(个月2%2!= 0){
如果(days2&其中; = 30&安培;&安培; days2> = 1){
valid2 = TRUE;
} 其他 {
valid2 = FALSE;
}
}否则,如果(个月2%2 == 0){
如果(days2&其中; = 31&安培;&安培; days2> = 1){
valid2 = TRUE;
} 其他 {
valid2 = FALSE;
}
}
}
}
//这增加了一天总,如果较早的日期是在一月份和放大器;其闰年
如果((months1 == 1)及及(leapyear1 ==真)){
daysbetween = daysbetween +1;
}
//这增加了留在YEAR1月
如果(months1 == 1){
daysbetween = daysbetween + 334;
}否则如果(months1 == 2){
daysbetween = daysbetween + 306;
}否则,如果(months1 == 3){
daysbetween = daysbetween + 275;
}否则,如果(months1 == 4){
daysbetween = daysbetween + 245;
}否则,如果(months1 == 5){
daysbetween = daysbetween + 214;
}否则,如果(months1 == 6){
daysbetween = daysbetween + 184;
}否则,如果(months1 == 7){
daysbetween = daysbetween + 153;
}否则,如果(months1 == 8){
daysbetween = daysbetween + 122;
}否则,如果(months1 == 9){
daysbetween = daysbetween + 92;
}否则,如果(months1 == 10){
daysbetween = daysbetween + 61;
}否则,如果(months1 == 11){
daysbetween = daysbetween + 31;
} 其他 { }
//这增加了,如果YEAR2是闰年多一天,如果月份是3或更高版本
如果((个月2> = 3)及及(leapyear2 =真)){
daysbetween = daysbetween + 1;
}
//这个添加个月到一个月YEAR2
如果(个月2 == 1){
daysbetween = daysbetween;
}否则,如果(个月2 == 2){
daysbetween = daysbetween + 31;
}否则,如果(个月2 == 3){
daysbetween = daysbetween + 59;
}否则,如果(个月2 == 4){
daysbetween = daysbetween + 90;
}否则,如果(个月2 == 5){
daysbetween = daysbetween + 120;
}否则,如果(个月2 == 6){
daysbetween = daysbetween + 151;
}否则,如果(个月2 == 7){
daysbetween = daysbetween + 181;
}否则,如果(个月2 == 8){
daysbetween = daysbetween + 212;
}否则,如果(个月2 == 9){
daysbetween = daysbetween + 243;
}否则,如果(个月2 == 10){
daysbetween = daysbetween + 273;
}否则,如果(个月2 == 11){
daysbetween = daysbetween + 304;
}否则,如果(个月2 == 12){
daysbetween = daysbetween + 334;
} 其他 { }
//这个添加留在MONTH1天
如果(months1!= 2){
如果(months1&所述; 8){
如果(months1%2!= 0){
daysbetween = daysbetween +(31 - days1);
}否则,如果(months1%2 == 0){
daysbetween = daysbetween +(30 - days1);
}
}否则如果(months1→8){
如果(months1%2!= 0){
daysbetween = daysbetween +(30 - days1);
}否则,如果(months1%2 == 0){
daysbetween = daysbetween +(31 - days1);
}
}
}
//这个添加留在MONTH1如果二月的天
如果((leapyear1 ==真)及及(months1 == 2)){
daysbetween = daysbetween +(29 - days1);
} 其他 {
daysbetween = daysbetween +(28 - days1);
}
daysbetween = daysbetween + days2; //增加了留在MONTH2天
daysbetween = daysbetween +((((year2-1) - (YEAR1 + 1))+ 1)* 365); //添加天的年总
为(长I =(YEAR1 + 1); I<(year2-1);我++){//看到leapyears B /ñYEAR1与放大器的#; YEAR2
如果((ⅰ%4 == 0)&安培;&安培;(ⅰ%100 = 0)||(ⅰ%400 == 0)!){
leapyearcounter ++;
}
}
daysbetween = daysbetween + leapyearcounter; //添加leapyear天
如果((valid1 ==假)||(valid2 == FALSE)){
的System.out.println(!对不起你给了我一个或多个无效的日期!);
}否则如果(daysbetween == 1){
的System.out.println(有+ daysbetween +这两个日期之间的天!);
}否则如果(daysbetween!= 1){
的System.out.println(有+ daysbetween +这两个日期之间的天!);
}否则,如果(daysbetween == 0){
的System.out.println(有这两个日期之间无天!);
}
}
}
解决方案
除非这个功课,或只是一些自我伤害的事情你都去,我可以推荐使用的乔达时库您的所有日期时间的计算:
时间使用乔达答案:〜22分的
This is a couple days off when I run the program. Any advice on what I am doing wrong?
I know there is a simpler way to do it, but for this I'm trying to show all the actual steps in finding the days between. thanks!
public class DaysBetween {
public static void main (String []args) {
long months1 = Long.parseLong(args[0]);
long days1 = Long.parseLong(args[1]);
long year1 = Long.parseLong(args[2]);
long months2 = Long.parseLong(args[3]);
long days2 = Long.parseLong(args[4]);
long year2 = Long.parseLong(args[5]);
long daysbetween = 0;
long leapyearcounter = 0;
boolean leapyear1 = false;
boolean leapyear2 = false;
boolean valid1 = true;
boolean valid2 = true;
int earlier = 0;
// this tests to see which date is earlier
if (year1 == year2){
if (months1 == months2) {
if (days1 == days2) {
daysbetween = daysbetween;
} else if (days1 < days2) {
earlier = 1;
}
} else if (months1 < months2) {
earlier = 1;
}
} else if (year1 < year2 ) {
earlier = 1;
}
// this switches the dates depending on which is earlier
switch(earlier) {
case 1: months1 = Long.parseLong(args[0]);
days1 = Long.parseLong(args[1]);
year1 = Long.parseLong(args[2]);
months2 = Long.parseLong(args[3]);
days2 = Long.parseLong(args[4]);
year2 = Long.parseLong(args[5]);
break;
default:
months1 = Long.parseLong(args[3]);
days1 = Long.parseLong(args[4]);
year1 = Long.parseLong(args[5]);
months2 = Long.parseLong(args[0]);
days2 = Long.parseLong(args[1]);
year2 = Long.parseLong(args[2]);
break;
}
//this section tests if the earlier date is valid
if((year1 % 4 == 0) && (year1 % 100 != 0) || (year1 % 400 == 0)) {
leapyear1 = true;
}
if ((leapyear1 == true) && (months1 == 2)) {
if (days1 <= 29 && days1 >=1){
valid1 = true;
}
} else if ((leapyear1 == false) && (months1 == 2)){
if (days1 <= 28 && days1 >= 1){
valid1 = true;
}
}
if (months1 != 2) {
if (months1 < 8 ) {
if (months1 %2 != 0) {
if (days1 <= 31 && days1 >=1){
valid1 = true;
} else {
valid1 = false;
}
} else if (months1 %2 == 0) {
if (days1 <= 30 && days1 >=1){
valid1 = true;
} else {
valid1 = false;
}
}
} else if (months1 > 8) {
if (months1 %2 != 0) {
if (days1 <= 30 && days1 >=1){
valid1 = true;
} else {
valid1 = false;
}
} else if (months1 %2 == 0) {
if (days1 <= 31 && days1 >=1){
valid1 = true;
} else {
valid1 = false;
}
}
}
}
// this section tests if the later date is valid
if((year2 % 4 == 0) && (year2 % 100 != 0) || (year2 % 400 == 0)) {
leapyear2 = true;
}
if ((leapyear2 == true) && (months2 == 2)) {
if (days2 <= 29 && days2 >=1){
valid2 = true;
}
} else if ((leapyear2 == false) && (months2 == 2)){
if (days2 <= 28 && days2 >= 1){
valid2 = true;
}
}
if (months2 != 2) {
if (months2 < 8 ) {
if (months2 %2 != 0) {
if (days2 <= 31 && days2 >=1){
valid2 = true;
} else {
valid2 = false;
}
} else if (months2 %2 == 0) {
if (days2 <= 30 && days2 >=1){
valid2 = true;
} else {
valid2 = false;
}
}
} else if (months2 > 8) {
if (months2 %2 != 0) {
if (days2 <= 30 && days2 >=1){
valid2 = true;
} else {
valid2 = false;
}
} else if (months2 %2 == 0) {
if (days2 <= 31 && days2 >=1){
valid2 = true;
} else {
valid2 = false;
}
}
}
}
//this adds a day to the total if the earlier date is in january & its a leap year
if ((months1 == 1) && (leapyear1 == true)) {
daysbetween = daysbetween +1;
}
//this adds the months left in year1
if (months1 == 1) {
daysbetween = daysbetween + 334;
} else if (months1 == 2) {
daysbetween = daysbetween + 306;
} else if (months1 == 3) {
daysbetween = daysbetween + 275;
} else if (months1 == 4) {
daysbetween = daysbetween + 245;
} else if (months1 == 5) {
daysbetween = daysbetween + 214;
} else if (months1 == 6) {
daysbetween = daysbetween + 184;
} else if (months1 == 7) {
daysbetween = daysbetween + 153;
} else if (months1 == 8) {
daysbetween = daysbetween + 122;
} else if (months1 == 9) {
daysbetween = daysbetween + 92;
} else if (months1 == 10) {
daysbetween = daysbetween + 61;
} else if (months1 == 11) {
daysbetween = daysbetween + 31;
} else { }
// this adds the extra day if year2 is leap year and if the month is march or later
if ((months2 >= 3) && (leapyear2 = true)) {
daysbetween = daysbetween + 1;
}
// this adds the months up to the month in year2
if (months2 == 1) {
daysbetween = daysbetween;
} else if (months2 == 2) {
daysbetween = daysbetween + 31;
} else if (months2 == 3) {
daysbetween = daysbetween + 59;
} else if (months2 == 4) {
daysbetween = daysbetween + 90;
} else if (months2 == 5) {
daysbetween = daysbetween + 120;
} else if (months2 == 6) {
daysbetween = daysbetween + 151;
} else if (months2 == 7) {
daysbetween = daysbetween + 181;
} else if (months2 == 8) {
daysbetween = daysbetween + 212;
} else if (months2 == 9) {
daysbetween = daysbetween + 243;
} else if (months2 == 10) {
daysbetween = daysbetween + 273;
} else if (months2 == 11) {
daysbetween = daysbetween + 304;
} else if (months2 == 12) {
daysbetween = daysbetween + 334;
} else { }
//this add the days left in month1
if (months1 != 2) {
if (months1 < 8 ) {
if (months1 %2 != 0) {
daysbetween = daysbetween + (31 - days1);
} else if (months1 %2 == 0) {
daysbetween = daysbetween + (30 - days1);
}
} else if (months1 > 8) {
if (months1 %2 != 0) {
daysbetween = daysbetween + (30 - days1);
} else if (months1 %2 == 0) {
daysbetween = daysbetween + (31 - days1);
}
}
}
// this add the days left in month1 if its feb
if ((leapyear1 == true) && (months1 == 2)) {
daysbetween = daysbetween + (29 - days1);
} else {
daysbetween = daysbetween + (28 - days1);
}
daysbetween = daysbetween + days2; // adds the days left in month2
daysbetween = daysbetween + ((((year2-1)-(year1+1))+1)*365); // adds the days in the years to the total
for (long i = (year1+1); i < (year2-1) ; i++) { // sees the # of leapyears b/n year1 & year2
if ((i % 4 == 0) && (i % 100 != 0) || (i % 400 == 0)) {
leapyearcounter++;
}
}
daysbetween = daysbetween + leapyearcounter; // adds the leapyear days
if ((valid1 == false) || (valid2 == false)) {
System.out.println("Sorry! You gave me one or more invalid dates!");
} else if (daysbetween == 1){
System.out.println("There is " + daysbetween + " day between those two dates!");
} else if (daysbetween != 1) {
System.out.println("There are " + daysbetween + " days between those two dates!");
} else if (daysbetween == 0) {
System.out.println("There are no days between those two dates!");
}
}
}
解决方案
Unless this homework or just some self hurting thing you have going can I recommend using the joda time library for all your datetime calculations:
Time to use joda answer: ~22 minutes
这篇关于之间的日期的Java天的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文