158 "SpreadsheetDate: Serial must be in range 2 to 2958465.");
159 }
160
161 // День-месяц-год должен синхронизироваться с порядковым номером...
162 calcDayMonthYear();
163
164 }
165
166 /**
167 * Возвращает описание, присоединенное к дате.
168 * Дата не обязана иметь описание, но в некоторых приложениях
169 * оно может оказаться полезным.
170 *
171 * @return описание, присоединенное к дате.
172 */
173 public String getDescription() {
174 return this.description;
175 }
176
177 /**
178 * Задает описание для даты.
179 *
180 * @param description описание даты (разрешается
181 *
null
).
182 */
183 public void setDescription(final String description) {
184 this.description = description;
185 }
186
187 /**
188 * Возвращает порядковый номер даты, где 1 января 1900 = 2
189 * (что почти соответствует системе нумерации, используемой в Microsoft
190 * Excel for Windows и Lotus 1-2-3).
191 *
192 * @return порядковый номер даты.
193 */
194 public int toSerial() {
195 return this.serial;
196 }
197
198 /**
199 * Возвращает объект
java.util.Date
, эквивалентный текущей дате.
200 *
201 * @return объект даты.
202 */
203 public Date toDate() {
204 final Calendar calendar = Calendar.getInstance();
205 calendar.set(getYYYY(), getMonth() - 1, getDayOfMonth(), 0, 0, 0);
206 return calendar.getTime();
207 }
208
209 /**
210 * Возвращает год (из действительного диапазона от 1900 до 9999).
211 *
212 * @return год.
213 */
214 public int getYYYY() {
215 return this.year;
216 }
217
218 /**
219 * Возвращает месяц (январь = 1, февраль = 2, март = 3).
220 *
221 * @return месяц года.
222 */
223 public int getMonth() {
224 return this.month;
225 }
226
227 /**
228 * Возвращает день месяца.
229 *
230 * @return день месяца.
231 */
232 public int getDayOfMonth() {
233 return this.day;
234 }
235
236 /**
237 * Возвращает код, представляющий день недели.
238 *
239 * Коды определяются в классе {@link SerialDate} следующим образом:
240 *
SUNDAY
, MONDAY
, TUESDAY
,
241 *
WEDNESDAY
, THURSDAY
, FRIDAY
и
242 *
SATURDAY
.
243 *
244 * @return Код, представляющий день недели.
245 */
246 public int getDayOfWeek() {
247 return (this.serial + 6) % 7 + 1;
248 }
249