>147 * день с заданным номером (в диапазоне от 2 до 2958465).
>148 *
>149 * @param serial порядковый номер дня (диапазон: от 2 до 2958465).
>150 */
>151 public SpreadsheetDate(final int serial) {
>152
>153 if ((serial >= SERIAL_LOWER_BOUND) && (serial <= SERIAL_UPPER_BOUND)) {
>154 this.serial = serial;
>155 }
>156 else {
>157 throw new IllegalArgumentException(
>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
Листинг Б.5 (продолжение)
>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() {