Pastebin launched a little side project called HostCabi.net, check it out ;-)Don't like ads? PRO users don't see any ads ;-)
Guest

EricHerman

By: ace on Jan 24th, 2010  |  syntax: None  |  size: 4.34 KB  |  hits: 9  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import java.sql.Timestamp;
  2. import java.util.Calendar;
  3. import java.util.Date;
  4. import java.util.GregorianCalendar;
  5.  
  6. public class RDate {
  7.  
  8.         private long millis;
  9.  
  10.         public RDate(){
  11.                 // timezone and locale?
  12.                 GregorianCalendar c = new GregorianCalendar();
  13.                 int year = c.get(Calendar.YEAR);
  14.                 int month = c.get(Calendar.MONTH);
  15.                 int day = c.get(Calendar.DAY_OF_MONTH);
  16.                 c.clear();
  17.                 c.set(year, month, day);
  18.                 millis = c.getTimeInMillis();
  19.         }
  20.        
  21.         public RDate(String rCal) {
  22.                 // timezone and locale?
  23.                 GregorianCalendar c = new GregorianCalendar();
  24.                 try {
  25.                         String[] rCalArray = rCal.split("-");
  26.                         String yearString = rCalArray[0];
  27.                         int year = Integer.parseInt(yearString);
  28.                         int month = Integer.parseInt(rCalArray[1]);
  29.                         int day = Integer.parseInt(rCalArray[2]);
  30.                         if(yearString.length()==4
  31.                                         &&(month>0&&month<=12)
  32.                                         &&(day>0&&day<=31)){           
  33.                                 c.clear();
  34.                                 c.set(year, month-1, day);}
  35.                         else{throw new IllegalArgumentException(rCal);}
  36.                 } catch (NumberFormatException e) {
  37.                         throw new IllegalArgumentException(rCal, e);
  38.                 }
  39.                 millis = c.getTimeInMillis();
  40.         }
  41.        
  42.         public RDate(int year, int month, int day){
  43.                 // timezone and locale?
  44.                 GregorianCalendar c = new GregorianCalendar();
  45.                 if((year<=9999 && year>=1000)
  46.                                 &&(month>0 && month<=12)
  47.                                 &&(day>0 && day<=31)){         
  48.                         c.clear();
  49.                         c.set(year, month-1, day);}
  50.                 else{throw new IllegalArgumentException(year+"-"+month+"-"+day);}
  51.                 millis = c.getTimeInMillis();
  52.         }
  53.        
  54.         /**
  55.          * Construct an RCalendar object from an (SQL) Date object
  56.          * @param date
  57.          */
  58.         public RDate(Date date){
  59.                 // default timezone and locale?
  60.                 Calendar cal = Calendar.getInstance();
  61.                 cal.clear();
  62.                 cal.setTime(date);
  63.                 GregorianCalendar c = new GregorianCalendar();
  64.                 c.clear();
  65.                 int year = cal.get(Calendar.YEAR);
  66.                 int month = cal.get(Calendar.MONTH);
  67.                 int day = cal.get(Calendar.DAY_OF_MONTH);
  68.                 c.set(year, month, day);
  69.                 millis = c.getTimeInMillis();
  70.         }
  71.        
  72.         /**
  73.          * Construct an RCalendar object from a Calendar object
  74.          * @param cal
  75.          */
  76.         public RDate(Calendar cal) {
  77.                 GregorianCalendar c = new GregorianCalendar();
  78.                 c.clear();
  79.                 int year = cal.get(Calendar.YEAR);
  80.                 int month = cal.get(Calendar.MONTH);
  81.                 int day = cal.get(Calendar.DAY_OF_MONTH);
  82.                 c.set(year, month, day);
  83.                 millis = c.getTimeInMillis();
  84.         }
  85.        
  86.         /**
  87.          * Construct and RCalendar object from an SQL Timestamp object
  88.          * @param Timestamp
  89.          */
  90.         public RDate(Timestamp t){
  91.                 long milliseconds = t.getTime();
  92.                 Calendar cal = Calendar.getInstance();
  93.                 cal.clear();
  94.                 cal.setTime(new java.util.Date(milliseconds));
  95.                 GregorianCalendar c = new GregorianCalendar();
  96.                 c.clear();
  97.                 int year = cal.get(Calendar.YEAR);
  98.                 int month = cal.get(Calendar.MONTH);
  99.                 int day = cal.get(Calendar.DAY_OF_MONTH);
  100.                 c.set(year, month, day);
  101.                 millis = c.getTimeInMillis();
  102.         }
  103.        
  104.         /**
  105.          * Construct an RCalendar which is equal to today's date
  106.          * plus some integer number of DATE (days), WEEK_OF_MONTH,
  107.          * MONTH, or YEAR.  Use negative numbers to subtract.
  108.          * @param String d, w, m, or y indicates that the amount
  109.          * should be added to days, weeks, months, or years
  110.          * @param amount is the number of d,w,m, or y to be added
  111.          */
  112.         public RDate(String dwmy, int amount){
  113.                 GregorianCalendar c = new GregorianCalendar();
  114.                 int year = c.get(Calendar.YEAR);
  115.                 int month = c.get(Calendar.MONTH);
  116.                 int day = c.get(Calendar.DATE);
  117.                 c.clear();
  118.                 c.set(year, month, day);
  119.                 if(dwmy.equals("d")){c.add(Calendar.DATE, amount);}
  120.                 if(dwmy.equals("w")){c.add(Calendar.WEEK_OF_YEAR, amount);}
  121.                 if(dwmy.equals("m")){c.add(Calendar.MONTH, amount);}
  122.                 if(dwmy.equals("y")){c.add(Calendar.YEAR, amount);}
  123.                 millis = c.getTimeInMillis();
  124.         }
  125.  
  126.         public Date toDate() {
  127.                 return new Date(millis);
  128.         }
  129.  
  130.         public GregorianCalendar toCalendar() {
  131.                 GregorianCalendar c = new GregorianCalendar();
  132.                 c.setTimeInMillis(millis);
  133.                 return c;
  134.         }
  135.  
  136.         public long toMilliseconds() {
  137.                 return millis;
  138.         }
  139.  
  140.         /**
  141.          * Overrides toString so that RCalendar objects print in the usual real-world
  142.          * year-month-day form.  Does not use leading 0's for single-digit months and days.
  143.          * @return String YYYY-M(M)-D(D)
  144.          */
  145.         public String toString(){
  146.                 GregorianCalendar c = new GregorianCalendar();
  147.                 c.setTimeInMillis(millis);
  148.                 return "" + c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH)+1) + "-" + c.get(Calendar.DAY_OF_MONTH);
  149.         }
  150. }