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 }