Description
Adds to a date returning a new object.
License
Apache License
Parameter
Parameter | Description |
---|
date | the date, not null |
calendarField | the calendar field to add to |
amount | the amount to add, may be negative |
Exception
Parameter | Description |
---|
IllegalArgumentException | if the date is null |
Return
the new Date with the amount added
Declaration
private static Date add(Date date, int calendarField, int amount)
Method Source Code
//package com.java2s;
/*// w w w.jav a2 s . c om
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Main {
/**
* Adds to a date returning a new object. The original {@code Date} is
* unchanged.
*
* @param date
* the date, not null
* @param calendarField
* the calendar field to add to
* @param amount
* the amount to add, may be negative
* @return the new {@code Date} with the amount added
* @throws IllegalArgumentException
* if the date is null
*/
private static Date add(Date date, int calendarField, int amount) {
if (date == null) {
throw new IllegalArgumentException("The date must not be null");
}
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(calendarField, amount);
return c.getTime();
}
public static long getTime(String date, String pattern) {
try {
return parseDate(date, pattern).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
/**
* <p>
* Parses a string representing a date by trying a variety of different
* parsers.
* </p>
*
* <p>
* The parse will try each parse pattern in turn. A parse is only deemed
* successful if it parses the whole of the input string. If no parse
* patterns match, a ParseException is thrown.
* </p>
* The parser will be lenient toward the parsed date.
*
* @param str
* the date to parse, not null
* @param parsePatterns
* the date format patterns to use, see SimpleDateFormat, not
* null
* @return the parsed date
* @throws IllegalArgumentException
* if the date string or pattern array is null
* @throws ParseException
* if none of the date patterns were suitable (or there were
* none)
*/
public static Date parseDate(String str, String... parsePatterns) throws ParseException {
return parseDateWithLeniency(str, parsePatterns, true);
}
/**
* <p>
* Parses a string representing a date by trying a variety of different
* parsers.
* </p>
*
* <p>
* The parse will try each parse pattern in turn. A parse is only deemed
* successful if it parses the whole of the input string. If no parse
* patterns match, a ParseException is thrown.
* </p>
*
* @param str
* the date to parse, not null
* @param parsePatterns
* the date format patterns to use, see SimpleDateFormat, not
* null
* @param lenient
* Specify whether or not date/time parsing is to be lenient.
* @return the parsed date
* @throws IllegalArgumentException
* if the date string or pattern array is null
* @throws ParseException
* if none of the date patterns were suitable
* @see java.util.Calender#isLenient()
*/
private static Date parseDateWithLeniency(String str, String[] parsePatterns, boolean lenient)
throws ParseException {
if (str == null || parsePatterns == null) {
throw new IllegalArgumentException("Date and Patterns must not be null");
}
SimpleDateFormat parser = new SimpleDateFormat();
parser.setLenient(lenient);
ParsePosition pos = new ParsePosition(0);
for (String parsePattern : parsePatterns) {
String pattern = parsePattern;
// LANG-530 - need to make sure 'ZZ' output doesn't get passed to
// SimpleDateFormat
if (parsePattern.endsWith("ZZ")) {
pattern = pattern.substring(0, pattern.length() - 1);
}
parser.applyPattern(pattern);
pos.setIndex(0);
String str2 = str;
// LANG-530 - need to make sure 'ZZ' output doesn't hit
// SimpleDateFormat as it will ParseException
if (parsePattern.endsWith("ZZ")) {
str2 = str.replaceAll("([-+][0-9][0-9]):([0-9][0-9])$", "$1$2");
}
Date date = parser.parse(str2, pos);
if (date != null && pos.getIndex() == str2.length()) {
return date;
}
}
throw new ParseException("Unable to parse the date: " + str, -1);
}
}
Related
- add(Date actual, Integer type, Integer count)
- add(Date date, int calendarField, int amount)
- add(Date date, int calendarField, int amount)
- add(Date date, int field, int amount)
- add(Date date, int field, int amount)
- add(Date date, int field, int diff)