content: /*
   *  Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation)
   *
   *  This file is part of Akvo FLOW.
   *
   *  Akvo FLOW is free software: you can redistribute it and modify it under the terms of
   *  the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
   *  either version 3 of the License or any later version.
   *
   *  Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   *  See the GNU Affero General Public License included below for more details.
   *
   *  The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
   */
  
  package com.gallatinsystems.common.util;
  
  import java.util.Calendar;
  import java.util.Date;
  import java.util.GregorianCalendar;
  
  /**
   * Collection of methods for date manipulation
   * 
   * @author Christopher Fagiani
   */
  public class DateUtil {
  
      /**
       * Returns a new date that is the same as the one passed in except it has a time of 00:00:00
       * 
       * @param oldDate
       * @return
       */
      public static Date getDateNoTime(Date oldDate) {
          GregorianCalendar cal = new GregorianCalendar();
          cal.setTime(oldDate);
          // drop the time portion
          cal.set(Calendar.HOUR_OF_DAY, 0);
          cal.set(Calendar.MINUTE, 0);
          cal.set(Calendar.SECOND, 0);
          cal.set(Calendar.MILLISECOND, 0);
          return cal.getTime();
      }
  
      /**
       * returns the year as a Long
       */
      public static Long getYear(Date dt) {
          GregorianCalendar cal = new GregorianCalendar();
          cal.setTime(dt);
          return new Long(cal.get(Calendar.YEAR));
      }
  
      /**
       * takes a string containing a 4 digit year and returns a Date object that has the year
       * indicated and all other fields set to 0 (so jan 1 of that year at 00:00:00)
       * 
       * @param year
       * @return
       * @throws NumberFormatException
       */
      public static Date getYearOnlyDate(String year)
              throws NumberFormatException {
          Calendar cal = new GregorianCalendar();
          cal.set(Calendar.DAY_OF_MONTH, 1);
          cal.set(Calendar.MONTH, 0);
          cal.set(Calendar.YEAR, new Integer(year));
          // sets the time portion to 00:00:00 and returns
          return getDateNoTime(cal.getTime());
      }
  }
  