第一种方法,计算一万天后的毫秒值加上出生当天日期的毫秒值,貌似超过了long的取值范围(结果大概1.6亿),问题就是这么返回该毫秒值的当前日期用第二种Calendara.add计算结果不准确import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;public class Test10000 { public static void main(String[] args) throws ParseException {
System.out.println("----请输入自己的生日:(yyyy-mm-dd)----"); Scanner sc = new Scanner(System.in); String birth = sc.nextLine();
// 将用户的生日转换为Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(birth); System.out.println(date1);// 出生的date1
/*
 * 第一种方法,问题是10000天之后的日期的毫秒值超过了long的取值范围
 */
 Date date = new Date();
 /**
 * 计算一万天纪念日
 */
 long time10 = 10000*60*60*24*1000+date1.getTime() ;
 System.out.println("一万天的毫秒值:  "+10000*60*60*24*1000+" ---答案结果应该是864,000,000,000,");
 System.out.println("出生当天的毫秒值: "+date1.getTime());  System.out.println(date); /*
 * 第二种方法计算,先计算从出生到今天多少天,再用10000-度过的天数
 */
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, 1602);
System.out.println(calendar.getTime()); }}

解决方案 »

  1.   


    刚刚看过之后发现计算的结果要加L,因为是long型
      

  2.   


    哦原来从一开始计算10000L*60L*60L*24L*1000L时候就要加上L,终于搞清楚了
      

  3.   

    public static void main(String[] args) {
    System.out.println("----请输入自己的生日:(yyyy-mm-dd)----");
    String str="2000-01-01";//假设2000年这天
    //根本不用那么麻烦 
    int a=10000%365;
    int b=10000/365;
    System.out.println(a+"剩余天数");
    System.out.println(b+"添加年份");

    //输出结果
    // ----请输入自己的生日:(yyyy-mm-dd)----
    // 145剩余天数
    // 27添加年份 //计算到底是365  还是 366
    int nian=Integer.parseInt(str.substring(0,4));//获取年
    int yue=Integer.parseInt(str.substring(5,7));
    int ri=Integer.parseInt(str.substring(8,10));
    int sum=0;
    for(int i=nian;i<=nian+b;i++){
    if(i%400==0){
    sum++;
    continue;
    }
    if(i%4==0&&i%100!=0){
    sum++;
    }

    }

    //数据都取出来了 剩下的就是计算 你自己算一下吧 我下班了


    }
      

  4.   

    使用joda第三方库:import org.joda;DateTime memday = new DateTime(yr, mth, dy, 0, 0).plusDays(10000);另,10000天不可能越界的,才30年,人的一生在30000天左右。而Int型已经是10位十进制了,Long型完全足够的。
      

  5.   

    LONG的范围是非常大的,比你想象中的要大很多很多,在目前所有数字的计算的领域里,long都是够用的