public static Calendar getCalendar(String date){ int year=Integer.parseInt(date.substring(0,4)); int month=Integer.parseInt(date.substring(4, 6)); int day=Integer.parseInt(date.substring(6, 8));
GregorianCalendar c=new GregorianCalendar(year, month, day); return c;} public static int getDay(Calendar c1,Calendar c2){ long m; int day; if(c1.compareTo(c2)>0){ m=c1.getTimeInMillis()-c2.getTimeInMillis(); }else if(c1.compareTo(c2)<0){ m=c2.getTimeInMillis()-c1.getTimeInMillis(); }else{ m=0; } day=(int)(m/(1000*60*60*24)); return day;
public int betweenDays(Calendar beginDate, Calendar endDate) {
if (beginDate.get(Calendar.YEAR) == endDate.get(Calendar.YEAR)) {
return endDate.get(Calendar.DAY_OF_YEAR)
- beginDate.get(Calendar.DAY_OF_YEAR);
} else {
if (beginDate.getTimeInMillis() < endDate.getTimeInMillis()) {
int days = beginDate.getActualMaximum(Calendar.DAY_OF_YEAR)
- beginDate.get(Calendar.DAY_OF_YEAR)
+ endDate.get(Calendar.DAY_OF_YEAR);
for (int i = beginDate.get(Calendar.YEAR) + 1; i < endDate
.get(Calendar.YEAR); i++) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, i);
days += c.getActualMaximum(Calendar.DAY_OF_YEAR);
}
return days;
} else {
int days = endDate.getActualMaximum(Calendar.DAY_OF_YEAR)
- endDate.get(Calendar.DAY_OF_YEAR)
+ beginDate.get(Calendar.DAY_OF_YEAR);
for (int i = endDate.get(Calendar.YEAR) + 1; i < beginDate
.get(Calendar.YEAR); i++) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, i);
days += c.getActualMaximum(Calendar.DAY_OF_YEAR);
}
return days;
}
}
}
public static int betweenDays(Calendar beginDate, Calendar endDate) {
//可以用正負代表前後
//return (int)((beginDate.getTimeInMillis() - endDate.getTimeInMillis())/(1000*60*60*24));//不然就取絕對值。
return (int) Math.abs((beginDate.getTimeInMillis() - endDate.getTimeInMillis())/(1000*60*60*24));
}
Year year = Year.now();
days = Period.daysBetween(year.atMonthDay(MonthDay.parse("1-1",formatter)),year.atMonthDay(MonthDay.parse("12-1",formatter))).getDays();
Calendar c2 = Calendar.getInstance();
c.set(2005, 5, 10);
c2.set(2011, 1, 1);
System.out.println((c2.getTimeInMillis()-c.getTimeInMillis())/(1000*3600*24));
ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream("date6.txt"));
obj.writeObject(date);
obj.close();
写入后中文变成了乱码@!
{
long differDays = 0;
long DAY = 24L * 60L * 60L * 1000L;
SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd" );
Date todayDate = new java.sql.Date(new Date().getTime());
Date paraDate = null;
try {
paraDate = df.parse( date );
} catch (ParseException e)
{
e.printStackTrace();
}
differDays = ( todayDate.getTime() - paraDate.getTime() ) / DAY ;
return differDays;
}
Calendar c2 = Calendar.getInstance();
c.set(2011, 1, 10);
c2.set(2011, 1, 12);
System.out.println((c2.getTimeInMillis()-c.getTimeInMillis())/(1000*3600*24));
测试过,success!!
return TimeUnit.MILLISECONDS.toDays(to.getTimeInMillis() - from.getTimeInMillis());
}
public class CaluateDate { /**
*
5、编写一个Java应用程序,当用户在输入对话框中输入两个日期后
(日期格式为YYYYMMDD,如1999年1月12日应输入为19990112),程序将判断两个日期的先后顺序,
以及两个日期之间的间隔天数(例如1999年1月1日和1999年1月2日之间的间隔是1天)。(本题20分)
*/
public static void main(String[] args) {
Calendar c1=getCalendar("19521231");
Calendar c2=getCalendar("19491001");
System.out.println(getDay(c1, c2));
}
public static Calendar getCalendar(String date){
int year=Integer.parseInt(date.substring(0,4));
int month=Integer.parseInt(date.substring(4, 6));
int day=Integer.parseInt(date.substring(6, 8));
GregorianCalendar c=new GregorianCalendar(year, month, day);
return c;} public static int getDay(Calendar c1,Calendar c2){
long m;
int day;
if(c1.compareTo(c2)>0){
m=c1.getTimeInMillis()-c2.getTimeInMillis();
}else if(c1.compareTo(c2)<0){
m=c2.getTimeInMillis()-c1.getTimeInMillis();
}else{
m=0;
}
day=(int)(m/(1000*60*60*24));
return day;
}
}
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;public class CalendarTest
{
public static void main(String[] args)
{
String str1=JOptionPane.showInputDialog(null,
"请输入第一个日期(日期格式为YYYYMMDD,如1999年1月12日应输入为19990112):");
String str2=JOptionPane.showInputDialog(null,
"请输入第二个日期(日期格式为YYYYMMDD,如1999年1月12日应输入为19990112):");
Calendar calendar1=new GregorianCalendar();
Calendar calendar2=new GregorianCalendar();
calendar1.set(Integer.parseInt(str1.substring(0, 4)),
Integer.parseInt(str1.substring(4, 6)),Integer.parseInt(str1.substring(6, 8)));
calendar2.set(Integer.parseInt(str2.substring(0, 4)),
Integer.parseInt(str2.substring(4, 6)),Integer.parseInt(str2.substring(6, 8)));
long mills1=calendar1.getTimeInMillis();
long mills2=calendar2.getTimeInMillis();
long interval=0;
if(mills1<mills2){
System.out.println("第一个日期先于第二个日期");
interval=(mills2-mills1)/(24*3600*1000);
}
else if(mills1>mills2){
System.out.println("第二个日期先于第一个日期");
interval=(mills1-mills2)/(24*3600*1000);
}
else
System.out.println("两个日期相等");
System.out.println("两个日期的间隔是:"+interval+" 天");
}
}