日期函数的生成原理[本文无技术含量,单纯为了记录一个纪念日]

本文档为博主便于记录2017,6,22这一天所记录;

生成的该天正好对应博主父亲在博主的这个年龄时博主的出现。所以是一个小小的纪念日;

package com.AutoFull.demo;
//功能实现阳历_某天到阳历某天 中间的天数;知晓其中两样求另外一样。
public class Demo {
	public static void main(String[] args) {

	System.out.println("打印出我的生日,应该是!");
	printDate(setDay(1970, 1, 6, 266));//我的生日--------70-93;过了23年;
	
	System.out.println("----打印纪念日----");
	printDate(setDay(2016, 9, 29,266));//所求纪念日
	
	System.out.println("验算生日项");//逐日回溯法;一个个往上加着看。
	System.out.println((setDT(1970, 1, 6, 1970, 9, 29)));
	}
	//功能返回天数,这个应该是优化法,二分法求解,略
	public static int setDT(int year,int month,int day,int year1,int month1,int day1){
		int kk=0;
		int[] date2 = new int[]{year1,month1,day1};
		int[] day2 = new int[3];
		while(!equalsArr(day2, date2)){
			day2 = setDate(year, month, day);//后一天。
			year = day2[0];
			month = day2[1];
			day = day2[2];
			kk++;//执行kk次,直到date2和day相同为止
		}
		return kk;
	}
	
	
	public static int[] setDay(int year,int month,int day,int k){
		int[] arr1 = new int[3];
		int i=0;
		while(i<k){
			int[] date = setDate(year, month, day);
			year = date[0];
			month = date[1];
			day = date[2];
			i++;
		}
		arr1 = new int[]{year,month,day};
		return arr1;
	}
	
	public static int reMon(int year, int month){
		int[] arr = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
		if(year%4 == 0){
			arr[1] = 29;
		}
		return arr[month-1];
	}

	public static int sum(int[] arr){
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			sum = sum + arr[i];
		}
		return sum;
	}
	
	//功能,每加一天返回一个日期
	public static int[] setDate(int year,int month,int day){
		int[] date = new int[3];
		int month_count = reMon(year, month);
		if (day < month_count) {
			date = new int[]{year,month,day+1};
		}else if(month < 12){
			date = new int[]{year,month+1,1};
		}else{
			date = new int[]{year+1,1,1};
		}
		return date;
	}
	
	public static void printDate(int[] date){
		System.out.println("该天为: "+date[0]+"/"+date[1]+"/"+date[2]);
	}
	public static boolean equalsArr(int[] arr1,int[] arr2){
		for (int i = 0; i < arr1.length; i++) {
			if(arr1[i] != arr2[i]){//中间加个分号,就无敌了
				return false;
			}
		}
		return true;
	}
}

-----------------end--------------

今天窝了一天,学了一些简单的算法;另外看了一些GUI的知识,也了解了电商的一些基本课程。



原文地址:https://www.cnblogs.com/actanble/p/6713457.html