1 /** 2 * Copyright 2005-2013 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.rice.core.api.datetime; 17 18 import java.sql.Timestamp; 19 import java.text.ParseException; 20 import java.util.Calendar; 21 import java.util.Date; 22 23 /** 24 * This interface defines methods that a DateTime service must provide 25 */ 26 public interface DateTimeService { 27 /** 28 * Translates the specified date into a string without a time component, formatted according to "stringDateFormat" that the 29 * service is configured with 30 * 31 * @param date 32 * @return formatted string version of the specified date 33 */ 34 String toDateString(Date date); 35 36 /** 37 * Translates the specified date into a string with a time component, formatted according to the "stringDateTimeFormat" that the 38 * service is configured with 39 * 40 * @param date 41 * @return formatted string version of the specified date 42 */ 43 String toDateTimeString(Date date); 44 45 /** 46 * Translates the specified date into a string without a time component, formatted according to the specified pattern 47 * 48 * @param date 49 * @return formatted string version of the specified date 50 */ 51 String toString(Date date, String pattern); 52 53 /** 54 * Returns the current date/time as a java.util.Date 55 * 56 * @return current date/time 57 */ 58 Date getCurrentDate(); 59 60 /** 61 * Returns the current date/time as a java.sql.Timestamp 62 * 63 * @return current date/time 64 */ 65 Timestamp getCurrentTimestamp(); 66 67 /** 68 * Returns the current date/time as a java.sql.Date 69 * 70 * @return current date/time 71 */ 72 java.sql.Date getCurrentSqlDate(); 73 74 /** 75 * Returns the current date as a java.sql.Date rounded back to midnight. This is what the JDBC driver is supposed to do with 76 * dates on their way to the database, so it can be convenient for comparing to dates from the database or input from the UI. 77 * 78 * @return current date at the most recent midnight in the JVM's timezone 79 */ 80 java.sql.Date getCurrentSqlDateMidnight(); 81 82 /** 83 * Returns a Calendar initialized with the current Date 84 * 85 * @return currennt Calendar 86 */ 87 Calendar getCurrentCalendar(); 88 89 /** 90 * Returns a Calendar initialized to the given Date 91 * 92 * @return date-specific Calendar 93 * @throws IllegalArgumentException if the given Date is null 94 */ 95 Calendar getCalendar(Date date); 96 97 /** 98 * Translates the specified string into a date without a time component, see implementation class for formatting details 99 * 100 * @param dateString 101 * @return the date representation of the specified dateString 102 * @throws ParseException 103 */ 104 Date convertToDate(String dateString) throws ParseException; 105 106 /** 107 * Translates the specified string into a date with a time component, formatted according to "stringDateTimeFormat" that the 108 * service is configured with 109 * 110 * @param dateTimeString 111 * @return the date representation of the specified dateTimeString 112 * @throws ParseException 113 */ 114 Date convertToDateTime(String dateTimeString) throws ParseException; 115 116 /** 117 * Converts the given String into a java.sql.Timestamp instance according to the "stringDateTimeFormat" that the service is 118 * configured with 119 * 120 * @param timeString 121 * @return java.sql.Timestamp 122 * @throws IllegalArgumentException if the given string is null or blank 123 * @throws ParseException if the string cannot be converted 124 */ 125 java.sql.Timestamp convertToSqlTimestamp(String timeString) throws ParseException; 126 127 /** 128 * Converts the given String into a java.sql.Date instance 129 * 130 * @param dateString 131 * @return java.sql.Date 132 * @throws IllegalArgumentException if the given string is null or blank 133 * @throws ParseException if the string cannot be converted 134 */ 135 java.sql.Date convertToSqlDate(String dateString) throws ParseException; 136 137 /** 138 * Converts a Timestamp into a sql Date. 139 * 140 * @param timestamp 141 * @return 142 */ 143 java.sql.Date convertToSqlDate(Timestamp timestamp) throws ParseException; 144 145 /** 146 * Returns the number of days between two days - start and end date of some arbitrary period. 147 * 148 * @param date1 The first date in the period 149 * @param date2 The second date in the period 150 * @param inclusive Whether the result should include both the start and the end date. Otherwise it only includes one. 151 * @return int The number of days in the period 152 */ 153 int dateDiff(Date date1, Date date2, boolean inclusive); 154 155 /** 156 * Returns a String representing a date that is suitable for file names, and is preferably chronologically sortable 157 * 158 * @param date 159 * @return 160 */ 161 String toDateStringForFilename(Date date); 162 163 /** 164 * Returns a String representing a date/time that is suitable for file names, and is preferably chronologically sortable 165 * 166 * @param date 167 * @return 168 */ 169 String toDateTimeStringForFilename(Date date); 170 171 172 }