package com.xiongyingqi.calendar;
import java.util.Calendar;
import java.util.Date;
/**
* Created by qi<a href="http://xiongyingqi.com">xiongyingqi.com</a> on 14-12-11.
*/
public class CalendarBuilder {
private Calendar calendar;// 原始日期
private Calendar calculateCalendar;// 计算结果
private CalendarBuilder() {
}
public static CalendarBuilder newBuilder(Date date) {
CalendarBuilder calendarBuilder = new CalendarBuilder();
Calendar instance = Calendar.getInstance();
Calendar instance2 = Calendar.getInstance();
instance.setTime(date);
instance2.setTime(date);
calendarBuilder.calendar = instance;
calendarBuilder.calculateCalendar = instance2;
return calendarBuilder;
}
public static CalendarBuilder newBuilder() {
return newBuilder(new Date());
}
public CalendarBuilder time(Date date) {
calendar.setTime(date);
calculateCalendar.setTime(date);
return this;
}
/**
* 增加plusMilliSeconds毫秒
* @param plusMilliSeconds
* @return
*/
public CalendarBuilder nextMilliSeconds(int plusMilliSeconds) {
calculateCalendar.add(Calendar.MILLISECOND, plusMilliSeconds);
return this;
}
/**
* 增加plusSeconds秒
* @param plusSeconds
* @return
*/
public CalendarBuilder nextSeconds(int plusSeconds) {
calculateCalendar.add(Calendar.SECOND, plusSeconds);
return this;
}
/**
* 增加plusMinutes分钟
* @param plusMinutes
* @return
*/
public CalendarBuilder nextMinutes(int plusMinutes) {
calculateCalendar.add(Calendar.MINUTE, plusMinutes);
return this;
}
/**
* 增加plusHours小时
* @param plusHours
* @return
*/
public CalendarBuilder nextHours(int plusHours) {
calculateCalendar.add(Calendar.HOUR, plusHours);
return this;
}
/**
* 增加plusDays天
* @param plusDays
* @return
*/
public CalendarBuilder nextDays(int plusDays) {
calculateCalendar.add(Calendar.DAY_OF_YEAR, plusDays);
return this;
}
/**
* 增加plusWeeks星期
* @param plusWeeks
* @return
*/
public CalendarBuilder nextWeeks(int plusWeeks) {
calculateCalendar.add(Calendar.WEEK_OF_YEAR, plusWeeks);
return this;
}
/**
* 增加plusMonths月
* @param plusMonths
* @return
*/
public CalendarBuilder nextMonths(int plusMonths) {
calculateCalendar.add(Calendar.MONTH, plusMonths);
return this;
}
/**
* 增加plusYears年
* @param plusYears
* @return
*/
public CalendarBuilder nextYears(int plusYears) {
calculateCalendar.add(Calendar.YEAR, plusYears);
return this;
}
/**
* 增加指定字段的数量
* @param field 字段{@link java.util.Calendar#set(int, int)}
* @param plus
* @return
*/
public CalendarBuilder next(int field, int plus) {
calculateCalendar.set(field, calculateCalendar.get(field) + plus);
return this;
}
public Calendar getCalendar() {
return calendar;
}
public void setCalendar(Calendar calendar) {
this.calendar = calendar;
}
public Calendar getCalculateCalendar() {
return calculateCalendar;
}
public void setCalculateCalendar(Calendar calculateCalendar) {
this.calculateCalendar = calculateCalendar;
}
/**
* 获取计算结果
*
* @return
*/
public Date getResultTime() {
return calculateCalendar.getTime();
}
/**
* 获取原始时间
*
* @return
*/
public Date getTime() {
return calendar.getTime();
}
}