com.tyme.solar.SolarYear Maven / Gradle / Ivy
package com.tyme.solar;
import com.tyme.AbstractTyme;
import java.util.ArrayList;
import java.util.List;
/**
* 公历年
*
* @author 6tail
*/
public class SolarYear extends AbstractTyme {
/**
* 年
*/
protected int year;
public SolarYear(int year) {
if (year < 1 || year > 9999) {
throw new IllegalArgumentException(String.format("illegal solar year: %d", year));
}
this.year = year;
}
/**
* 从年初始化
*
* @param year 年,支持1到9999年
* @return 公历年
*/
public static SolarYear fromYear(int year) {
return new SolarYear(year);
}
/**
* 年
*
* @return 年
*/
public int getYear() {
return year;
}
/**
* 天数(1582年355天,平年365天,闰年366天)
*
* @return 天数
*/
public int getDayCount() {
if (1582 == year) {
return 355;
}
return isLeap() ? 366 : 365;
}
/**
* 是否闰年(1582年以前,使用儒略历,能被4整除即为闰年。以后采用格里历,四年一闰,百年不闰,四百年再闰。)
*
* @return true/false
*/
public boolean isLeap() {
if (year < 1600) {
return year % 4 == 0;
}
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
public String getName() {
return String.format("%d年", year);
}
public SolarYear next(int n) {
return fromYear(year + n);
}
/**
* 月份列表
*
* @return 月份列表,1年有12个月。
*/
public List getMonths() {
List l = new ArrayList<>(12);
for (int i = 1; i < 13; i++) {
l.add(SolarMonth.fromYm(year, i));
}
return l;
}
/**
* 季度列表
*
* @return 季度列表,1年有4个季度。
*/
public List getSeasons() {
List l = new ArrayList<>(4);
for (int i = 0; i < 4; i++) {
l.add(SolarSeason.fromIndex(year, i));
}
return l;
}
/**
* 半年列表
*
* @return 半年列表,1年有2个半年。
*/
public List getHalfYears() {
List l = new ArrayList<>(2);
for (int i = 0; i < 2; i++) {
l.add(SolarHalfYear.fromIndex(year, i));
}
return l;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy