第一种方法,计算一万天后的毫秒值加上出生当天日期的毫秒值,貌似超过了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()); }}
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()); }}
解决方案 »
- 关于Java 锁的问题,我刚学不懂,求指点
- 刚才去thoughtworks面试,被结结实实的鄙视了一把,不过输的心服口服!
- JAVA就职方面对于“注释文档”的要求高吗?
- 注意:ListService.java使用了未经检查或不安全的操作
- 昕旸软件隆重推出,特别推荐:小灰狗助手
- 一个字符串类型的变量,保存sql,执行时总是说 ORA-00911: 无效字符,为什么????????????????????????????????
- 这个异常 是什么原因?
- eclipse 可以写c函数吗? how?
- 同时安装j2sdk和jbuilder,j2sdk下无法编译.java文件。WHY!!!
- 好奇怪的初始化问题。
- 搞了两天没明白,图的非递归DFS,和BFS,请教大家,谢谢
- 本人是小白 最近在看java基础方面的视频教程 有一些问题想解答 希望牛人帮个忙 多谢大牛们
刚刚看过之后发现计算的结果要加L,因为是long型
哦原来从一开始计算10000L*60L*60L*24L*1000L时候就要加上L,终于搞清楚了
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++;
}
}
//数据都取出来了 剩下的就是计算 你自己算一下吧 我下班了
}