0
所以,我有一些代码,通过使用System.currentTimeMillis();
语句做一大堆东西来确定日期。然而,我一直有代码问题,尽管我可以正确显示月份和日期,但是这一年总是比未来2年(例如:如果是1970年,我的代码将显示1972年等)。虽然插入一个从计算年份减去2年的声明会更容易,但我希望它能够可靠地计算年份。但是,唉,我找不到导致此错误的问题。如果任何人都可以帮助我,这将不胜感激。代码如下。请求日期显示的帮助
import java.io.*;
import java.util.*;
public class fancyClock {
public static void main(String[] args) {
int counter = 1;
int year = 1970;
boolean isLeapYear = false;
int yearsUntilLeapYear = 2;
int days = 0;
int daysTemp = 0;
int months = 1;
String month = "";
int hours = 24;
int minutes = 00;
int day = 0;
long millis = System.currentTimeMillis();
System.out.println(millis);
while (counter == 1) {
if (millis - 86400000 > 0) {
days++;
millis = millis - 86400000;
} else {
counter--;
}
}
counter++;
daysTemp = days;
while (counter == 1) {
year++;
yearsUntilLeapYear--;
if (yearsUntilLeapYear == 0) {
isLeapYear = true;
}
// ESSENTIAL!!! IF COND MUST BE MOD, NOT MINUS!!!
if (daysTemp % 365 > 0 && isLeapYear == false) {
daysTemp = daysTemp - 365;
} else if (daysTemp % 366 > 0 && isLeapYear == true) {
isLeapYear = false;
yearsUntilLeapYear = 4;
daysTemp = daysTemp - 366;
} else {
counter--;
}
}
counter++;
if (isLeapYear == true) {
daysTemp = daysTemp + 366;
} else if (isLeapYear == false) {
daysTemp = daysTemp + 365;
}
System.out.println("Days after flip: " + daysTemp);
while (counter == 1) {
if ((months == 1 && (daysTemp - 31 > 0)) || (months == 3 && (daysTemp - 31 > 0)) || (months == 5 && (daysTemp - 31 > 0)) || (months == 7 && (daysTemp - 31 > 0)) || (months == 8 && (daysTemp - 31 > 0)) || (months == 10 && (daysTemp - 31 > 0)) || (months == 12 && (daysTemp - 31 > 0))) {
daysTemp = daysTemp - 31;
months++;
} else if (months == 2 && isLeapYear == true && (daysTemp - 29 > 0)) {
daysTemp = daysTemp - 29;
months++;
} else if (months == 2 && isLeapYear == false && (daysTemp - 28 > 0)) {
daysTemp = daysTemp - 28;
months++;
} else if ((months == 4 && (daysTemp - 30 > 0)) || (months == 6 && (daysTemp - 30 > 0)) || (months == 9 && (daysTemp - 30 > 0)) || (months == 11 && (daysTemp - 30 > 0))) {
daysTemp = daysTemp - 30;
months++;
} else {
counter--;
}
}
if (months == 1) {
month = "January";
} else if (months == 2) {
month = "Febuary";
} else if (months == 3) {
month = "March";
} else if (months == 4) {
month = "April";
} else if (months == 5) {
month = "May";
} else if (months == 6) {
month = "June";
} else if (months == 7) {
month = "July";
} else if (months == 8) {
month = "August";
} else if (months == 9) {
month = "September";
} else if (months == 10){
month = "October";
} else if (months == 11){
month = "November";
} else {
month = "December";
}
day = daysTemp;
System.out.println("FANCY CLOCK BETA");
System.out.println("Current date: " + month + " " + day + ", " + year);
}
}
好,我不明白你的逻辑可言。 'while(counter == 1){++} {++};' –
这只是一个正常的循环。保持代码运行,直到代码处理完所有内容。 – gnimmargorP
@gnimmargorP确保你的类名遵循PascalCase而不是camelCase。 https://en.wikipedia.org/wiki/PascalCase –