package com.nlf.calendar; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * 阳历年 * * @author 6tail * */ public class SolarYear{ /** 年 */ private int year; /** * 默认当年 */ public SolarYear(){ this(new Date()); } /** * 通过日期初始化 */ public SolarYear(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); year = c.get(Calendar.YEAR); } /** * 通过日历初始化 */ public SolarYear(Calendar calendar){ year = calendar.get(Calendar.YEAR); } /** * 通过年初始化 * * @param year 年 */ public SolarYear(int year){ this.year = year; } /** * 通过指定日期获取阳历年 * * @param date 日期 * @return 阳历年 */ public static SolarYear fromDate(Date date){ return new SolarYear(date); } /** * 通过指定日历获取阳历年 * * @param calendar 日历 * @return 阳历年 */ public static SolarYear fromCalendar(Calendar calendar){ return new SolarYear(calendar); } /** * 通过指定年份获取阳历年 * * @param year 年 * @return 阳历年 */ public static SolarYear fromYear(int year){ return new SolarYear(year); } /** * 获取年 * * @return 年 */ public int getYear(){ return year; } /** * 获取本年的阳历月列表 * * @return 阳历月列表 */ public List getMonths(){ List l = new ArrayList(12); SolarMonth m = new SolarMonth(year,1); l.add(m); for(int i = 1;i<12;i++){ l.add(m.next(i)); } return l; } /** * 获取往后推几年的阳历年,如果要往前推,则年数用负数 * @param years 年数 * @return 阳历年 */ public SolarYear next(int years){ Calendar c = Calendar.getInstance(); c.set(year,0,1); c.add(Calendar.YEAR,years); return new SolarYear(c); } public String toString(){ return year+""; } public String toFullString(){ return year+"年"; } }