001 /* 002 * Copyright 2001-2005 Stephen Colebourne 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.joda.time; 017 018 /** 019 * Defines an instant in time that can be queried and modified using datetime fields. 020 * <p> 021 * The implementation of this interface will be mutable. 022 * It may provide more advanced methods than those in the interface. 023 * <p> 024 * Methods in your application should be defined using <code>ReadWritableDateTime</code> 025 * as a parameter if the method wants to manipulate and change a date in simple ways. 026 * 027 * @author Stephen Colebourne 028 * @author Brian S O'Neill 029 * @since 1.0 030 */ 031 public interface ReadWritableDateTime extends ReadableDateTime, ReadWritableInstant { 032 033 //----------------------------------------------------------------------- 034 /** 035 * Set the year to the specified value. 036 * 037 * @param year the year 038 * @throws IllegalArgumentException if the value is invalid 039 */ 040 void setYear(int year); 041 042 /** 043 * Add a number of years to the date. 044 * 045 * @param years the years to add 046 * @throws IllegalArgumentException if the value is invalid 047 */ 048 void addYears(int years); 049 050 //----------------------------------------------------------------------- 051 /** 052 * Set the weekyear to the specified value. 053 * 054 * @param weekyear the weekyear 055 * @throws IllegalArgumentException if the value is invalid 056 */ 057 void setWeekyear(int weekyear); 058 059 /** 060 * Add a number of weekyears to the date. 061 * 062 * @param weekyears the weekyears to add 063 * @throws IllegalArgumentException if the value is invalid 064 */ 065 void addWeekyears(int weekyears); 066 067 //----------------------------------------------------------------------- 068 /** 069 * Set the month of the year to the specified value. 070 * 071 * @param monthOfYear the month of the year 072 * @throws IllegalArgumentException if the value is invalid 073 */ 074 void setMonthOfYear(int monthOfYear); 075 076 /** 077 * Add a number of months to the date. 078 * 079 * @param months the months to add 080 * @throws IllegalArgumentException if the value is invalid 081 */ 082 void addMonths(int months); 083 084 //----------------------------------------------------------------------- 085 /** 086 * Set the week of weekyear to the specified value. 087 * 088 * @param weekOfWeekyear the week of the weekyear 089 * @throws IllegalArgumentException if the value is invalid 090 */ 091 void setWeekOfWeekyear(int weekOfWeekyear); 092 093 /** 094 * Add a number of weeks to the date. 095 * 096 * @param weeks the weeks to add 097 * @throws IllegalArgumentException if the value is invalid 098 */ 099 void addWeeks(int weeks); 100 101 //----------------------------------------------------------------------- 102 /** 103 * Set the day of year to the specified value. 104 * 105 * @param dayOfYear the day of the year 106 * @throws IllegalArgumentException if the value is invalid 107 */ 108 void setDayOfYear(int dayOfYear); 109 110 /** 111 * Set the day of the month to the specified value. 112 * 113 * @param dayOfMonth the day of the month 114 * @throws IllegalArgumentException if the value is invalid 115 */ 116 void setDayOfMonth(int dayOfMonth); 117 118 /** 119 * Set the day of week to the specified value. 120 * 121 * @param dayOfWeek the day of the week 122 * @throws IllegalArgumentException if the value is invalid 123 */ 124 void setDayOfWeek(int dayOfWeek); 125 126 /** 127 * Add a number of days to the date. 128 * 129 * @param days the days to add 130 * @throws IllegalArgumentException if the value is invalid 131 */ 132 void addDays(int days); 133 134 //----------------------------------------------------------------------- 135 /** 136 * Set the hour of the day to the specified value. 137 * 138 * @param hourOfDay the hour of day 139 * @throws IllegalArgumentException if the value is invalid 140 */ 141 void setHourOfDay(int hourOfDay); 142 143 /** 144 * Add a number of hours to the date. 145 * 146 * @param hours the hours to add 147 * @throws IllegalArgumentException if the value is invalid 148 */ 149 void addHours(int hours); 150 151 //----------------------------------------------------------------------- 152 /** 153 * Set the minute of the day to the specified value. 154 * 155 * @param minuteOfDay the minute of day 156 * @throws IllegalArgumentException if the value is invalid 157 */ 158 void setMinuteOfDay(int minuteOfDay); 159 160 /** 161 * Set the minute of the hour to the specified value. 162 * 163 * @param minuteOfHour the minute of hour 164 * @throws IllegalArgumentException if the value is invalid 165 */ 166 void setMinuteOfHour(int minuteOfHour); 167 168 /** 169 * Add a number of minutes to the date. 170 * 171 * @param minutes the minutes to add 172 * @throws IllegalArgumentException if the value is invalid 173 */ 174 void addMinutes(int minutes); 175 176 //----------------------------------------------------------------------- 177 /** 178 * Set the second of the day to the specified value. 179 * 180 * @param secondOfDay the second of day 181 * @throws IllegalArgumentException if the value is invalid 182 */ 183 void setSecondOfDay(int secondOfDay); 184 185 /** 186 * Set the second of the minute to the specified value. 187 * 188 * @param secondOfMinute the second of minute 189 * @throws IllegalArgumentException if the value is invalid 190 */ 191 void setSecondOfMinute(int secondOfMinute); 192 193 /** 194 * Add a number of seconds to the date. 195 * 196 * @param seconds the seconds to add 197 * @throws IllegalArgumentException if the value is invalid 198 */ 199 void addSeconds(int seconds); 200 201 //----------------------------------------------------------------------- 202 /** 203 * Set the millis of the day to the specified value. 204 * 205 * @param millisOfDay the millis of day 206 * @throws IllegalArgumentException if the value is invalid 207 */ 208 void setMillisOfDay(int millisOfDay); 209 210 /** 211 * Set the millis of the second to the specified value. 212 * 213 * @param millisOfSecond the millis of second 214 * @throws IllegalArgumentException if the value is invalid 215 */ 216 void setMillisOfSecond(int millisOfSecond); 217 218 /** 219 * Add a number of milliseconds to the date. The implementation of this 220 * method differs from the {@link #add(long)} method in that a 221 * DateTimeField performs the addition. 222 * 223 * @param millis the milliseconds to add 224 * @throws IllegalArgumentException if the value is invalid 225 */ 226 void addMillis(int millis); 227 228 /** 229 * Set the date from fields. 230 * The time part of this object will be unaffected. 231 * 232 * @param year the year 233 * @param monthOfYear the month of the year 234 * @param dayOfMonth the day of the month 235 * @throws IllegalArgumentException if any value is invalid 236 */ 237 void setDate(int year, int monthOfYear, int dayOfMonth); 238 239 /** 240 * Set the time from fields. 241 * The date part of this object will be unaffected. 242 * 243 * @param hour the hour 244 * @param minuteOfHour the minute of the hour 245 * @param secondOfMinute the second of the minute 246 * @param millisOfSecond the millisecond of the second 247 * @throws IllegalArgumentException if any value is invalid 248 */ 249 void setTime(int hour, int minuteOfHour, int secondOfMinute, int millisOfSecond); 250 251 /** 252 * Set the date and time from fields. 253 * 254 * @param year the year 255 * @param monthOfYear the month of the year 256 * @param dayOfMonth the day of the month 257 * @param hourOfDay the hour of the day 258 * @param minuteOfHour the minute of the hour 259 * @param secondOfMinute the second of the minute 260 * @param millisOfSecond the millisecond of the second 261 * @throws IllegalArgumentException if any value is invalid 262 */ 263 void setDateTime( 264 int year, int monthOfYear, int dayOfMonth, 265 int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond); 266 267 }