1
0
mirror of synced 2025-12-29 08:47:59 +08:00
Files
lunar-java/src/main/java/com/nlf/calendar/SolarYear.java
2018-06-24 17:48:32 +08:00

123 lines
2.1 KiB
Java

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<SolarMonth> getMonths(){
List<SolarMonth> l = new ArrayList<SolarMonth>(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+"";
}
}