Coverage Report - net.wotonomy.foundation.NSDate
 
Classes in this File Line Coverage Branch Coverage Complexity
NSDate
0% 
0% 
1.75
 
 1  
 /*
 2  
 Wotonomy: OpenStep design patterns for pure Java applications.
 3  
 Copyright (C) 2000 Blacksmith, Inc.
 4  
 
 5  
 This library is free software; you can redistribute it and/or
 6  
 modify it under the terms of the GNU Lesser General Public
 7  
 License as published by the Free Software Foundation; either
 8  
 version 2.1 of the License, or (at your option) any later version.
 9  
 
 10  
 This library is distributed in the hope that it will be useful,
 11  
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 12  
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 13  
 Lesser General Public License for more details.
 14  
 
 15  
 You should have received a copy of the GNU Lesser General Public
 16  
 License along with this library; if not, see http://www.gnu.org
 17  
 */
 18  
 
 19  
 package net.wotonomy.foundation;
 20  
 
 21  
 import java.util.Date;
 22  
 import java.util.GregorianCalendar;
 23  
 import java.util.TimeZone;
 24  
 
 25  
 /**
 26  
 * A pure java implementation of NSDate that extends
 27  
 * java.util.Date for greater java compatibility.
 28  
 *
 29  
 * @author michael@mpowers.net
 30  
 * @author $Author: cgruber $
 31  
 * @version $Revision: 892 $
 32  
 */
 33  
 public class NSDate extends Date
 34  
 {
 35  
         // NSComparisonResult compatibility
 36  
         
 37  
         public static final int NSOrderedAscending = -1;
 38  
         public static final int NSOrderedSame = 0;
 39  
         public static final int NSOrderedDescending = 1;
 40  
 
 41  
 //    public static final double TimeIntervalSince1970;
 42  
 //    public static final NSDate DateFor1970;
 43  
 
 44  
     /**
 45  
     * Default constructor represents the current date.
 46  
     */
 47  
     public NSDate ()
 48  
     {
 49  0
             super();
 50  0
     }
 51  
     
 52  
     /**
 53  
     * Represents the specified number of seconds from the current date.
 54  
     */
 55  
     public NSDate (double seconds)
 56  
     {
 57  0
             super( (long) new NSDate().getTime() + 
 58  0
                     timeIntervalToMilliseconds(seconds) );        
 59  0
     }
 60  
     
 61  
     /**
 62  
     * Represents the specified number of seconds from the specified date.
 63  
     */
 64  
     public NSDate (double seconds, Date sinceDate)
 65  
     {
 66  0
             super( (long) sinceDate.getTime() +
 67  0
                     timeIntervalToMilliseconds(seconds) );        
 68  0
     }
 69  
 
 70  
     /**
 71  
     * Returns the interval between this date and 1 January 2001 GMT.
 72  
     */
 73  
     public double timeIntervalSinceReferenceDate ()
 74  
     {
 75  0
                 GregorianCalendar referenceDate = 
 76  0
                         new GregorianCalendar( TimeZone.getTimeZone( "GMT" ) );    
 77  0
                 referenceDate.set( 2001, 0, 0, 0, 0, 0 );
 78  0
                 return timeIntervalSinceDate( referenceDate.getTime() );
 79  
         }
 80  
 
 81  
     /**
 82  
     * Returns the interval between this date and the specified date
 83  
     * in seconds.
 84  
     */
 85  
     public double timeIntervalSinceDate (Date aDate)
 86  
     {
 87  0
             return millisecondsToTimeInterval( 
 88  0
                     this.getTime() - aDate.getTime() );
 89  
     }
 90  
     
 91  
     /**
 92  
     * Returns the interval between this date and the current date
 93  
     * in seconds.
 94  
     */
 95  
     public double timeIntervalSinceNow ()
 96  
     {
 97  0
             return timeIntervalSinceDate( new NSDate() );
 98  
     }
 99  
     
 100  
     /** 
 101  
     * Compares this date to the specified date and returns the
 102  
     * earlier date.  Unspecified which is returned if both are equal.
 103  
     */
 104  
     public NSDate earlierDate (NSDate aDate)
 105  
     {
 106  0
             if ( aDate == null ) return this;
 107  0
             if ( after( aDate ) ) return aDate;
 108  0
             return this;
 109  
     }
 110  
 
 111  
     /** 
 112  
     * Compares this date to the specified date and returns the
 113  
     * later date.  Unspecified which is returned if both are equal.
 114  
     */
 115  
     public NSDate laterDate (NSDate aDate)
 116  
     {
 117  0
             if ( aDate == null ) return this;
 118  0
             if ( before( aDate ) ) return aDate;
 119  0
             return this;
 120  
     }
 121  
 
 122  
     /** 
 123  
     * Returns a negative value if the specified date is later than
 124  
     * this date, a positive value if the specified date is earlier
 125  
     * than this date, or zero if the dates are equal.  The return
 126  
     * values are compatible with type NSComparisonResult.
 127  
     */
 128  
     public int compare (Date aDate)
 129  
     {
 130  0
             if ( before( aDate ) ) return NSOrderedAscending;
 131  0
             if ( after( aDate ) )  return NSOrderedDescending;
 132  0
             return NSOrderedSame;
 133  
     }
 134  
     
 135  
     /** 
 136  
     * Returns whether the this date is equal to the specified date,
 137  
     * per the result of equals().
 138  
     */
 139  
     public boolean isEqualToDate (Date aDate)
 140  
     {
 141  0
             return equals( aDate );
 142  
     }
 143  
     
 144  
     /**
 145  
     * Returns a date that differs from this date by the specified
 146  
     * number of seconds.
 147  
     */
 148  
     public NSDate dateByAddingTimeInterval (double seconds)
 149  
     {
 150  0
             return new NSDate( seconds, this );
 151  
     }
 152  
     
 153  
     /**
 154  
     * Returns the number of seconds between now and the reference date.
 155  
     */
 156  
     public static double currentTimeIntervalSinceReferenceDate ()
 157  
     {
 158  0
             return new NSDate().timeIntervalSinceReferenceDate();
 159  
     }
 160  
     
 161  
     /**
 162  
     * Converts seconds to milliseconds.  Included for compatibility.
 163  
     */
 164  
     public static long timeIntervalToMilliseconds (double seconds)
 165  
     {
 166  0
             return (long) seconds*1000;
 167  
     }
 168  
     
 169  
     /**
 170  
     * Converts milliseconds to seconds.  Included for compatibility.
 171  
     */
 172  
     public static double millisecondsToTimeInterval (long millis)
 173  
     {
 174  0
             return millis/1000.0;
 175  
     }
 176  
     
 177  
     /**
 178  
     * Returns a date that is greater than all representable dates.
 179  
     */
 180  
     public static NSDate distantFuture ()
 181  
     {
 182  0
             NSDate result = new NSDate();
 183  0
             result.setTime( Long.MAX_VALUE );
 184  0
             return result;
 185  
     }
 186  
     
 187  
     /**
 188  
     * Returns a date that is less than all representable dates.
 189  
     */
 190  
     public static NSDate distantPast ()
 191  
     {
 192  0
             NSDate result = new NSDate();
 193  0
             result.setTime( Long.MIN_VALUE );
 194  0
             return result;
 195  
     }
 196  
 
 197  
 // inherited from java.util.Date
 198  
 //    public java.lang.String toString ();
 199  
 //    public boolean equals (java.lang.Object);
 200  
 //    public int hashCode ();
 201  
 
 202  
 }
 203  
 
 204  
 /*
 205  
  * $Log$
 206  
  * Revision 1.1  2006/02/16 12:47:16  cgruber
 207  
  * Check in all sources in eclipse-friendly maven-enabled packages.
 208  
  *
 209  
  * Revision 1.1.1.1  2000/12/21 15:47:28  mpowers
 210  
  * Contributing wotonomy.
 211  
  *
 212  
  * Revision 1.3  2000/12/20 16:25:38  michael
 213  
  * Added log to all files.
 214  
  *
 215  
  *
 216  
  */
 217