|
/**
* dayOfProgrammer
* American time machine test on
the Russia Calendar
* return 256th day of programmer
day
* exists two type calendar
* Julian Calendar
* Gregorian Calendar
* output
* that day by using simple date
format dd.mm.yyy
* constriants:
* 1700<=year<=2700
* 1918 year is a special year
* the 32th day January is February
14th this year and this month is beging with 14th day
* from 1700 to 1917 using Julian
Calendar
* from 1919 to 2700 using
Gregorian Calendar
*
* @param year
* @return
*/
public
static String dayOfProgrammer(int year) {
if (year < 1700 || year >
2700) {
return null;
}
// if ()
return null;
}
/**
* get day of programmer by using
Russia Gregorian Calendar
* 256th day of programmer in this
input year
* @param year
* @return
*/
public static String dayOfProgrammerGregorian(int
year) {
if (!checkIsGregorianYear(year))
{
return null;
}
StringBuilder stringBuilder = new
StringBuilder();
stringBuilder.append(year);
if (checkIsLeapYear(year))
{
// Jan31 Feb29 March31
April30 May31 June30 July31 August31 Sept30 Octor31 Norve30 Decem31
int yearWhichMonth = CalendarConstant.WHICHDAYOFPROGRAMMER
/ 29;
if(yearWhichMonth==GregorianCalendarMonthEnum.JAN.getMonthVal()){
stringBuilder.append(GregorianCalendarMonthEnum.JAN.getKey());
}else if(yearWhichMonth==GregorianCalendarMonthEnum.FEB.getMonthVal()){
stringBuilder.append(GregorianCalendarMonthEnum.JAN.getKey());
}else if(yearWhichMonth==GregorianCalendarMonthEnum.MAR.getMonthVal()){
stringBuilder.append(GregorianCalendarMonthEnum.JAN.getKey());
}else if(yearWhichMonth==GregorianCalendarMonthEnum.APR.getMonthVal()){
stringBuilder.append(GregorianCalendarMonthEnum.JAN.getKey());
}else if(yearWhichMonth==GregorianCalendarMonthEnum.MAY.getMonthVal()){
stringBuilder.append(GregorianCalendarMonthEnum.JAN.getKey());
}else if(yearWhichMonth==GregorianCalendarMonthEnum.JUN.getMonthVal()){
stringBuilder.append(GregorianCalendarMonthEnum.JAN.getKey());
}else if(yearWhichMonth==GregorianCalendarMonthEnum.JUL.getMonthVal()){
stringBuilder.append(GregorianCalendarMonthEnum.JAN.getKey());
} else if(yearWhichMonth==GregorianCalendarMonthEnum.AUG.getMonthVal()){
stringBuilder.append(GregorianCalendarMonthEnum.JAN.getKey());
}else if(yearWhichMonth==GregorianCalendarMonthEnum.SEP.getMonthVal()){
stringBuilder.append(GregorianCalendarMonthEnum.JAN.getKey());
} else if (yearWhichMonth==GregorianCalendarMonthEnum.OCT.getMonthVal())
{
} else if (yearWhichMonth==GregorianCalendarMonthEnum.NOV.getMonthVal())
{
} else if (yearWhichMonth==GregorianCalendarMonthEnum.DEC.getMonthVal())
{
}
}
return null;
}
/**
* check year if is leap year
*
* @param year
* @return
*/
public static Boolean checkIsLeapYear(int
year) {
if (year < 1700 || year >
2700) {
return null;
}
if (year % 400 == 0 || (year % 4
== 0 && year % 100 != 0)) {
return true;
}
return false;
}
/**
* check year if it is Russia
Julian Calendar
*
* @param year
* @return
*/
public static Boolean checkIsJulianYear(int
year) {
if (year < 1700 || year >
2700) {
return null;
}
if (year >= 1700 && year
<= 1917) {
return true;
}
return false;
}
/**
* check year if it is Russia Greborian
Calendar
*
* @param year
* @return
*/
public static Boolean checkIsGregorianYear(int
year) {
if (year < 1700 || year >
2700) {
return null;
}
if (year > 1918 && year
<= 2700) {
return true;
}
return false;
}
/**
* check year if it is Russia
special transmition year
*
* @param year
* @return
*/
public static Boolean checkIsRussiaSpecialTransitionYear(int
year) {
if (year < 1700 || year >
2700) {
return null;
}
if (year == 1918) {
return true;
}
return false;
}
package tcs.com.utils.constant;
public class CalendarConstant {
public static final int GREGORIANLEAPYEARTOTALDAYS=366;
public static final int GREGORIANNOTLEAPYEARTOTALDAYS=365;
public static final int WHICHDAYOFPROGRAMMER=256;
}
package tcs.com.utils.enumration;
public enum GregorianCalendarMonthEnum {
JAN("JAN","1月",1),
FEB("FEB","2月",2),
MAR("MAR","3月",3),
APR("APR","4月",4),
MAY("MAY","5月",5),
JUN("JUN","6月",6),
JUL("JUL","7月",7),
AUG("AUG","8月",8),
SEP("SEP","9月",9),
OCT("OCT","10月",10),
NOV("NOV","11月",11),
DEC("DEC","12月",12)
;
private String key;
private String value;
private Integer monthVal;
private GregorianCalendarMonthEnum(String
key, String value, Integer monthVal) {
this.key = key;
this.value = value;
this.monthVal = monthVal;
}
public String getKey(){
return this.key;
}
public String getValue(){
return this.value;
}
public Integer getMonthVal(){
return this.monthVal;
}
}
|