用JAVA来写的话。怎么写出出生年月日来计算距离下个生日还有多少天的方法?
出生年月日的格式是yyyy-MM-dd。
返回值为String类型
// 用来计算两个日期之间相差的毫秒数
public static void test(String date1,String date2) throws ParseException
{
DateFormat df = DateFormat.getDateInstance();
df= new SimpleDateFormat("yyyy-MM-dd");
Date date_1 = df.parse(date1);
Date date_2 = df.parse(date2);
long time1 = date_1.getTime();
long time2 = date_2.getTime();
long time3 = Math.abs(time1-time2);
int day = getDay(time3);
System.out.println("两日期相隔"+day+"天");
}
//将两个日期之间的毫秒数换算成天数
private static int getDay(long time)
{
int day = (int)(time/1000/60/60/24);
return day;
}
public static void main(String[] args) {
int nextDays = nextBirthday(2, 13, false);
if (nextDays > 0) {
System.out.println("下个生日还有:" + nextDays);
}
}
/**
*
* @param month
* 生日的月份
* @param day
* 生日的日期
* @param incoludeToday
* 包含今天
* @return
*/
public static int nextBirthday(int month, int day, boolean incoludeToday) {
Calendar thisYearBirthday = Calendar.getInstance();
thisYearBirthday.set(Calendar.MONTH, month - 1);
thisYearBirthday.set(Calendar.DAY_OF_MONTH, day);
return daysOfTwo(new Date(), thisYearBirthday.getTime()) - (incoludeToday ? 1 : 0);
}
public static int daysOfTwo(Date fDate, Date oDate) {
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(fDate);
int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(oDate);
int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
return day2 - day1;
}
package test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Testone {
public static void main(String[] args) {
try {
test("1991-05-11");
} catch (ParseException e) {
e.printStackTrace();
}
}
public static void test(String date1) throws ParseException
{
String a1=date1.substring(0, 4);
Integer a2=Integer.parseInt(a1);
DateFormat df = DateFormat.getDateInstance();
df= new SimpleDateFormat("yyyy-MM-dd");
Date date_1 = df.parse(date1);
Date date_2 = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(date_2);
String a3=dateString.substring(0, 4);
Integer a4=Integer.parseInt(a3);
long time1 = date_1.getTime();
long time2 = date_2.getTime();
long time3 = Math.abs(time1-time2);
int day = getDay(time3);
int day1= day-Ser(a2, a4)-(a4-a2)*365;
System.out.println("两日期相隔"+(Math.abs(day1))+"天");
}
//将两个日期之间的毫秒数换算成天数
private static int getDay(long time)
{
int day = (int)(time/1000/60/60/24);
return day;
}
public static Integer Ser(Integer str,Integer str2){
int number=0;
for(int i = str; i<=str2; i++){
if(i%4==0&&i%100!=0||i%400==0){
number+=1;
}
}
return number;
}
}