001
014
015 package com.liferay.portal.kernel.util;
016
017 import java.text.Format;
018
019 import java.util.Calendar;
020 import java.util.Date;
021 import java.util.TimeZone;
022
023
026 public class Time {
027
028 public static final long SECOND = 1000;
029
030 public static final long MINUTE = SECOND * 60;
031
032 public static final long HOUR = MINUTE * 60;
033
034 public static final long DAY = HOUR * 24;
035
036 public static final long WEEK = DAY * 7;
037
038 public static final long MONTH = DAY * 30;
039
040 public static final long YEAR = DAY * 365;
041
042 public static final String RFC822_FORMAT = "EEE, dd MMM yyyy HH:mm:ss Z";
043
044 public static final String TIMESTAMP_FORMAT = "yyyyMMddkkmmssSSS";
045
046 public static final String SHORT_TIMESTAMP_FORMAT = "yyyyMMddkkmm";
047
048 public static Date getDate(Calendar cal) {
049 Calendar adjustedCal = CalendarFactoryUtil.getCalendar();
050
051 adjustedCal.set(Calendar.YEAR, cal.get(Calendar.YEAR));
052 adjustedCal.set(Calendar.MONTH, cal.get(Calendar.MONTH));
053 adjustedCal.set(Calendar.DATE, cal.get(Calendar.DATE));
054 adjustedCal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY));
055 adjustedCal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE));
056 adjustedCal.set(Calendar.SECOND, cal.get(Calendar.SECOND));
057 adjustedCal.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
058
059 return adjustedCal.getTime();
060 }
061
062 public static Date getDate(TimeZone tz) {
063 Calendar cal = CalendarFactoryUtil.getCalendar(tz);
064
065 return getDate(cal);
066 }
067
068 public static Date getDate(Date date, TimeZone tz) {
069 Calendar cal = CalendarFactoryUtil.getCalendar(tz);
070
071 cal.setTime(date);
072
073 return getDate(cal);
074 }
075
076 public static String getDescription(long milliseconds) {
077 return getDescription(milliseconds, false);
078 }
079
080 public static String getDescription(
081 long milliseconds, boolean approximate) {
082
083 String s = StringPool.BLANK;
084
085 int x = 0;
086
087 if (approximate) {
088 if (milliseconds <= 0) {
089 s = "0 Seconds";
090 }
091 else if (milliseconds < MINUTE) {
092 x = (int)(milliseconds / SECOND);
093
094 s = x + " Second";
095 }
096 else if (milliseconds < HOUR) {
097 x = (int)(milliseconds / MINUTE);
098
099 s = x + " Minute";
100 }
101 else if (milliseconds < DAY) {
102 x = (int)(milliseconds / HOUR);
103
104 s = x + " Hour";
105 }
106 else if (milliseconds < MONTH) {
107 x = (int)(milliseconds / DAY);
108
109 s = x + " Day";
110 }
111 else if (milliseconds < YEAR) {
112 x = (int)(milliseconds / MONTH);
113
114 s = x + " Month";
115 }
116 else if (milliseconds >= YEAR) {
117 x = (int)(milliseconds / YEAR);
118
119 s = x + " Year";
120 }
121 }
122 else {
123 if (milliseconds % WEEK == 0) {
124 x = (int)(milliseconds / WEEK);
125
126 s = x + " Week";
127 }
128 else if (milliseconds % DAY == 0) {
129 x = (int)(milliseconds / DAY);
130
131 s = x + " Day";
132 }
133 else if (milliseconds % HOUR == 0) {
134 x = (int)(milliseconds / HOUR);
135
136 s = x + " Hour";
137 }
138 else if (milliseconds % MINUTE == 0) {
139 x = (int)(milliseconds / MINUTE);
140
141 s = x + " Minute";
142 }
143 else if (milliseconds % SECOND == 0) {
144 x = (int)(milliseconds / SECOND);
145
146 s = x + " Second";
147 }
148 }
149
150 if (x > 1) {
151 s += "s";
152 }
153
154 return s;
155 }
156
157 public static String getRFC822() {
158 return getRFC822(new Date());
159 }
160
161 public static String getRFC822(Date date) {
162 return getSimpleDate(date, RFC822_FORMAT);
163 }
164
165 public static String getShortTimestamp() {
166 return getShortTimestamp(new Date());
167 }
168
169 public static String getShortTimestamp(Date date) {
170 return getSimpleDate(date, SHORT_TIMESTAMP_FORMAT);
171 }
172
173 public static String getSimpleDate(Date date, String format) {
174 String s = StringPool.BLANK;
175
176 if (date != null) {
177 Format dateFormat = FastDateFormatFactoryUtil.getSimpleDateFormat(
178 format);
179
180 s = dateFormat.format(date);
181 }
182
183 return s;
184 }
185
186 public static String getTimestamp() {
187 return getTimestamp(new Date());
188 }
189
190 public static String getTimestamp(Date date) {
191 return getSimpleDate(date, TIMESTAMP_FORMAT);
192 }
193
194 }