private Calendar promptForDate(BufferedReader keyboard)
				throws IOException {
			Calendar date = new GregorianCalendar();
			boolean valid = true;
			do {
				// Prompt and read input
				System.out
						.print("Task date (Format = DD/MM/YYYY, Default = today): ");
				String dateString = keyboard.readLine();

				// If input is empty, return current date as default
				if (!dateString.isEmpty()) {
					// Tokenize input by slashes
					StringTokenizer dateTokenizer = new StringTokenizer(
							dateString, "/");
					String[] dateTokens = new String[dateTokenizer
							.countTokens()];
					int i = 0;
					while (dateTokenizer.hasMoreTokens()) {
						dateTokens[i] = dateTokenizer.nextToken();
						i++;
					}

					// Check that the input format was correct
					if (dateTokens.length == 3) {
						valid = true;

						// Parse input into a Calenar object
						try {
							int day = Integer.parseInt(dateTokens[0]);
							int month = Integer.parseInt(dateTokens[1]) - 1;
							int year = Integer.parseInt(dateTokens[2]);
							date = new GregorianCalendar(year, month, day);
						} catch (NumberFormatException e) {
							valid = false;
							System.out.println("Format must be DD/MM/YYYY");
						}
					} else {
						valid = false;
						System.out.println("Format must be DD/MM/YYYY");
					}
				} else {
					valid = true;
				}
			} while (!valid); // Repeat until valid input is received

			return date;
		}