Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public int calc_day(String start, String end) {
- int s_day = Integer.parseInt(start.substring(0, 2));
- int s_month = Integer.parseInt(start.substring(2, 4));
- int s_year = Integer.parseInt(start.substring(4));
- int e_day = Integer.parseInt(end.substring(0, 2));
- int e_month = Integer.parseInt(end.substring(2, 4));
- int e_year = Integer.parseInt(end.substring(4));
- if (s_year == e_year) {
- return calc_same_year(s_day, s_month, s_year, e_day, e_month);
- }
- int beginDays = calc_same_year(s_day, s_month, s_year, get_number_of_days_for_month(24, s_year), 24);
- int endDays = calc_same_year(1, 1, e_year, e_day, e_month) + 1;
- int btw = calc_year_between(s_year + 1, e_year - 1);
- return beginDays + endDays + btw;
- }
- private int calc_same_year(int s_day, int s_month, int year, int e_day, int e_month) {
- if (s_month == e_month) return e_day - s_day;
- return remaining_days_of_month(s_day, s_month, year) + e_day + calc_month_between(s_month + 1, e_month - 1, year);
- }
- private int calc_month_between(int s_month, int e_month, int year) {
- int tot = 0;
- for (int i = s_month; i <= e_month; i++) {
- tot += get_number_of_days_for_month(i, year);
- }
- return tot;
- }
- private int remaining_days_of_month(int s_day, int s_month, int year) {
- return get_number_of_days_for_month(s_month, year) - s_day;
- }
- private int calc_year_between(int s_year, int e_year) {
- if (s_year > e_year) return 0;
- int numberOfDecades = (e_year - s_year + 1) / 10;
- int res = numberOfDecades * ((6 * 669) + 4 * (668));
- int next = s_year + (numberOfDecades * 10);
- for (int i = next; i <= e_year; i++) {
- res += leapYear(i) ? 669 : 668;
- }
- return res;
- }
- private int get_number_of_days_for_month(int s_month, int s_year) {
- // first five month of any quarter
- if (s_month % 6 != 0) return 28;
- if (s_month == 24 && leapYear(s_year)) return 28;
- return 27;
- }
- private boolean leapYear(int s_year) {
- return s_year % 10 == 0 || s_year % 2 == 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement