Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/flexstor/common/util/FlexDate.java


1   /*
2    * FlexDate.java
3    *
4    * Copyright $Date: 2003/08/11 02:22:31 $ FLEXSTOR.net Inc.
5    *
6    * This work is licensed for use and distribution under license terms found at
7    * http://www.flexstor.org/license.html
8    *
9    */
10  
11  package com.flexstor.common.util;
12  
13  import java.util.Date;
14  import java.util.StringTokenizer;
15  
16  public class FlexDate
17  extends java.util.GregorianCalendar
18  {
19     private String sMoment = null;// A moment in time
20     
21     public FlexDate() {}
22     
23     /**
24     * FlexDate
25     * @param A String representation of a Date
26     * mm/dd/yyyy hh:mm:ss
27     * mm 01 - 12
28     * dd 01 - 31
29     * yyyy 
30     * hh 0 - 24
31     * mm 0 - 59
32     * ss 0 - 59
33     **/
34     public FlexDate(String when)
35     {
36          super();
37          sMoment = when;
38          int nSpaceIndex; // space seperates date from time
39          int nSlashIndex; // The index of the next slash
40          //Integer iTmp; // Used to convert Strings to ints
41          StringTokenizer sTokens;
42          String sDate = sMoment;
43          String sTime = "00:00:00";
44          
45          nSpaceIndex = sMoment.indexOf(" ");
46          if(nSpaceIndex != -1)
47          {
48              sDate = sMoment.substring(0, nSpaceIndex);
49              sTime = sMoment.substring(nSpaceIndex + 1, sMoment.length());
50          }
51          
52          sTokens = new StringTokenizer(sDate, "/");
53          
54          try{
55          set(ERA, AD);
56          set(MONTH, Integer.parseInt(sTokens.nextToken()) -1 );// The Calendar class uses a zero base Month field 
57          set(DATE, Integer.parseInt(sTokens.nextToken() )); 
58          set(YEAR, Integer.parseInt(sTokens.nextToken() ));
59          // Now do Time
60          sTokens = new StringTokenizer(sTime, ":");
61          set(HOUR_OF_DAY, Integer.parseInt(sTokens.nextToken() ));
62          set(MINUTE, Integer.parseInt(sTokens.nextToken() ));
63          set(SECOND, Integer.parseInt(sTokens.nextToken() ));
64          }
65          catch(java.util.NoSuchElementException e)
66          {
67              complete();
68          }
69          catch(java.lang.NumberFormatException e)
70          {
71              complete();
72          }
73     }
74     
75     public FlexDate(int year, int month, int date)
76     {
77        super(year, month, date);  
78     }
79     
80     public FlexDate(Date date)
81     {
82        this.setTime(date);   
83     }
84     
85     public FlexDate(int year, int month, int date, int hour, int minute)
86     {
87        super(year, month, date, hour, minute);  
88     }
89     
90     public FlexDate(int year, int month, int date, int hour, int minute, int second)
91     {
92        super(year, month, date, hour, minute, second);  
93     }
94                            
95     public FlexDate(long millis)
96     {
97        setTimeInMillis(millis);
98     }
99      
100    public void rollForward()
101    {
102       int dayofmonth = fields[DAY_OF_MONTH];
103       dayofmonth++;
104       
105       set(DAY_OF_MONTH, dayofmonth ); 
106    }
107    
108    
109    public String toString()
110    {
111       StringBuffer buffer = new StringBuffer(19);
112       Date dt = this.getTime();
113       this.setTime(dt);
114       
115       buffer.append(ensureDoubleDigit(fields[MONTH] + 1)); // Zero based month
116       buffer.append("/");
117       buffer.append(ensureDoubleDigit(fields[DATE]));
118       buffer.append("/");
119       buffer.append(ensureDoubleDigit(fields[YEAR]));
120       buffer.append(" "); //A space seperates date from time
121       buffer.append(ensureDoubleDigit(fields[HOUR]));
122       buffer.append(":");
123       buffer.append(ensureDoubleDigit(fields[MINUTE]));
124       buffer.append(":");
125       buffer.append(ensureDoubleDigit(fields[SECOND]));
126       return buffer.toString();
127    }
128    
129    private String ensureDoubleDigit(int nNumber)
130    {
131       String sNumber = null;
132       
133       sNumber = Integer.toString(nNumber);
134       
135       if(nNumber < 10)
136       {
137            sNumber = "0".concat(sNumber);
138       }
139       else
140       {
141          Integer.toString(nNumber);
142       }
143       
144       return sNumber;
145    }
146    public long getTimeInSeconds()
147    {
148       return getTimeInMillis() / 1000;  
149    }
150    
151    /**
152    * Returns the current time (not date). e.g. "12:35:20AM"
153    */
154    public String getCurrentTimeString()
155    {
156       StringBuffer buffer = new StringBuffer(19);
157       Date dt = this.getTime();
158       this.setTime(dt);
159       
160       buffer.append(ensureDoubleDigit(fields[HOUR]));
161       buffer.append(":");
162       buffer.append(ensureDoubleDigit(fields[MINUTE]));
163       buffer.append(":");
164       buffer.append(ensureDoubleDigit(fields[SECOND]));
165       if (fields[AM_PM] == AM)
166          buffer.append("AM");
167       else
168          buffer.append("PM");
169       return buffer.toString();
170    }
171 }