您的位置:首页 > 编程语言 > Java开发

java实现闰年区分并计算一天在一年中的第几天

2018-01-27 17:08 375 查看
// date为"2018-01-27"形式
public static float getJ(String date){

int year = 0;
int MM = 0;
int dd = 0;
try {
Date sdf = new SimpleDateFormat("yyyy-MM-dd").parse(date);

SimpleDateFormat sdf0 = new SimpleDateFormat("yyyy");
SimpleDateFormat sdf1 = new SimpleDateFormat("MM");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd");
//      截取年份
String str0 = sdf0.format(sdf);
//      截取月份
String str1 = sdf1.format(sdf);
//      截取日
String str2 = sdf2.format(sdf);

//      转int类型
year = Integer.parseInt(str0);
MM = Integer.parseInt(str1);
dd = Integer.parseInt(str2);

} catch (ParseException e) {
e.printStackTrace();
}

//      J  ---为儒略日,取值范围为1到365或366;
int J =0;
for (int i = 1; i < MM; i++) {
J = getJ(year, i, dd);
}
return J;
}

//能被4整除且不能被100整除或者能被400整除的年份为闰年
public static int getJ(int year,int month,int day) {
int totalDay=0;
for(int i=1;i<month;i++){
totalDay+=getMonthDay(year,i);
}
int J = totalDay+day;
return J;

}

public static int getMonthDay(int year,int month){
boolean flag=isRunnian(year);
if(month==2){
if(flag==true){
return 29;
}else{
return 28;
}
}else if(month==4||month==6||month==9||month==11){
return 30;
}else{
return 31;
}
}

public static boolean isRunnian(int year){
if((year%4==0&&year%100!=0)||(year%400==0)){
return true;
}else{
return false;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐