| /*** 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;
 }
 
 
 }
   |