2 m0 37213323 m0_37213323 于 2017.01.13 12:53 提问

用JAVA来写的话。怎么写出出生年月日来计算距离下个生日还有多少天的方法?

用JAVA来写的话。怎么写出出生年月日来计算距离下个生日还有多少天的方法?
出生年月日的格式是yyyy-MM-dd。
返回值为String类型

3个回答

sun1021873926
sun1021873926   Ds   Rxr 2017.01.13 12:56
已采纳

// 用来计算两个日期之间相差的毫秒数
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;
}

sun1021873926
sun1021873926 回复shicrom: 没有误差呀,中间相隔365天是两个年份都是平年,中间相隔366天是其中一个年份是闰年。
11 个月之前 回复
m0_37213323
m0_37213323 回复夕阳雨晴: 那个还是有误差。。。不知道误差从哪里来
11 个月之前 回复
m0_37213323
m0_37213323 回复夕阳雨晴: 那个还是有误差。。。不知道误差从哪里来
11 个月之前 回复
m0_37213323
m0_37213323 回复夕阳雨晴: 好的。。。我知道了谢谢了。我验证下
11 个月之前 回复
sun1021873926
sun1021873926 可以呀,结合这段代码,结合你的想法去尝试噻,
11 个月之前 回复
m0_37213323
m0_37213323 距离时间是获取现在的时间进行计算的。。可以把方法其中一个改为获取现在的时间吗
11 个月之前 回复
englishbage
englishbage   2017.01.13 13:43

    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;
    }


m0_37213323
m0_37213323   2017.01.13 13:49

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;
}

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!