用户输入一段时间字符串算出它离1949-10-1有多少天。
import java.util.*;
public class test{
public static void main(String[] args)throws Exception{
Scanner ac=new Scanner(System.in);
String line=ac.nextLine();
Date date =new Date(line);
Calendar time=Calendar.getInstance();
time.setTime(date);
long now_time=time.getTimeInMillis();
time.set(1949, 10, 1);
long old_time=time.getTimeInMillis();
System.out.println((int)((now_time-old_time)/(1000*60*60*24)));
}
}
我的这段代码出错在什么地方?
该怎么写?
分数不多,望谅解。
import java.util.*;
public class test{
public static void main(String[] args)throws Exception{
Scanner ac=new Scanner(System.in);
String line=ac.nextLine();
Date date =new Date(line);
Calendar time=Calendar.getInstance();
time.setTime(date);
long now_time=time.getTimeInMillis();
time.set(1949, 10, 1);
long old_time=time.getTimeInMillis();
System.out.println((int)((now_time-old_time)/(1000*60*60*24)));
}
}
我的这段代码出错在什么地方?
该怎么写?
分数不多,望谅解。
这句也不对,应该改为ystem.out.println(((now_time-old_time)/(1000*60*60*24)));
因为一个月头尾两天相差的毫秒数已经超过了int所能表示的范围,何况相差好几年,只能用long表示。
Integer year=Integer.parseInt(ac.nextLine());
Integer mouth=Integer.parseInt(ac.nextLine());
Integer day=Integer.parseInt(ac.nextLine());
Date date =new Date(year-1900,mouth,day);
//年份 y 由整数 y - 1900 表示。
Calendar time=Calendar.getInstance();
time.setTime(date);
long now_time=time.getTimeInMillis();
//月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。 time.set(1949, 10, 1);
long old_time=time.getTimeInMillis();
System.out.println((now_time-old_time)/(1000*60*60*24));这样改试试。我调试通过了
public static void main(String[] args) throws Exception {
String line = "1949-10-01";
while (!(line = new Scanner(System.in).nextLine()).matches("\\d{4}-\\d{2}-\\d{2}")){
System.out.println("format: yyyy-mm-dd");
}
DateFormat df = new SimpleDateFormat("yyyy-mm-dd");
System.out.println(
(df.parse(line).getTime() - df.parse("1949-10-01").getTime())
/ (1000*60*60*24)
);
}
}