Here you can find the source of getSpecficMonthStart(Date date, int amount)
public static Date getSpecficMonthStart(Date date, int amount)
//package com.java2s; //License from project: Apache License import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Main { public static SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); public static SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); public static Date getSpecficMonthStart(Date date, int amount) { Calendar cal = Calendar.getInstance(); cal.setTime(date);/* w w w .j a v a2s.co m*/ cal.add(Calendar.MONTH, amount); cal.set(Calendar.DAY_OF_MONTH, 1); return getStartDate(cal.getTime()); } /** * Adds to a date returning a new object. * The original date object 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 date object with the amount added * @throws IllegalArgumentException if the date is null * @deprecated Will become privately scoped in 3.0 */ @Deprecated public 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 Date add(int field, Date date, int value) { Calendar c = Calendar.getInstance(); c.setTime(date); int fieldNewValue = (c.get(field) + value); c.set(field, fieldNewValue); return c.getTime(); } /** * Sets the specified field to a date returning a new object. * This does not use a lenient calendar. * The original date object is unchanged. * * @param date the date, not null * @param calendarField the calendar field to set the amount to * @param amount the amount to set * @return a new Date object set with the specified value * @throws IllegalArgumentException if the date is null * @since 2.4 */ private static Date set(Date date, int calendarField, int amount) { if (date == null) { throw new IllegalArgumentException("The date must not be null"); } // getInstance() returns a new object, so this method is thread safe. Calendar c = Calendar.getInstance(); c.setLenient(false); c.setTime(date); c.set(calendarField, amount); return c.getTime(); } public static Date getStartDate(Date date) { String temp = format.format(date); temp += " 00:00:00"; try { return format1.parse(temp); } catch (Exception e) { return null; } } public static String getTime(String pattern) { return new SimpleDateFormat(pattern).format(new Date()); } public static int get(int field, Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(field); } public static Date parse(Long time) { if (time == null) { return null; } Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(time); return cal.getTime(); } }