Long s1 = new Long("20080808"); Long s2 = new Long("20080901"); Long datetime =s2-s1; int second = new Long(datetime / 1000).intValue(); int day = second / (3600 * 24);
package com.date.utlit;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 计算任意2个日期内的工作日(没有考虑到国定假日) * @author user * */ public class DateCal { /** * @param args */ public static void main(String[] args) { try { String strDateStart = "2006-10-1"; String strDateEnd = "2006-10-14"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date_start = sdf.parse(strDateStart); Date date_end = sdf.parse(strDateEnd); DateCal app = new DateCal(); Calendar cal_start = Calendar.getInstance(); Calendar cal_end = Calendar.getInstance(); cal_start.setTime(date_start); cal_end.setTime(date_end); System.out.println("星期-->" + app.getChineseWeek(cal_start) + " 日期-->" + cal_start.get(Calendar.YEAR) + "-" + (cal_start.get(Calendar.MONTH) + 1) + "-" + cal_start.get(Calendar.DAY_OF_MONTH)); System.out.println("星期-->" + app.getChineseWeek(cal_end) + " 日期-->" + cal_end.get(Calendar.YEAR) + "-" + (cal_end.get(Calendar.MONTH) + 1) + "-" + cal_end.get(Calendar.DAY_OF_MONTH)); System.out.println("工作日为-->" + app.getWorkingDay(cal_start, cal_end)); System.out.println("休息日-->"+app.getHolidays(cal_start, cal_end)); } catch (Exception e) { // TODO: handle exception } } public int getDaysBetween(java.util.Calendar d1, java.util.Calendar d2) { if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end java.util.Calendar swap = d1; d1 = d2; d2 = swap; } int days = d2.get(java.util.Calendar.DAY_OF_YEAR) - d1.get(java.util.Calendar.DAY_OF_YEAR); int y2 = d2.get(java.util.Calendar.YEAR); if (d1.get(java.util.Calendar.YEAR) != y2) { d1 = (java.util.Calendar) d1.clone(); do { days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR); d1.add(java.util.Calendar.YEAR, 1); } while (d1.get(java.util.Calendar.YEAR) != y2); } return days; } /** * 计算2个日期之间的相隔天数 * @param d1 * @param d2 * @return */ public int getWorkingDay(java.util.Calendar d1, java.util.Calendar d2) { int result = -1; if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end java.util.Calendar swap = d1; d1 = d2; d2 = swap; } int betweendays = getDaysBetween(d1, d2); int charge_date = 0; int charge_start_date = 0;//开始日期的日期偏移量 int charge_end_date = 0;//结束日期的日期偏移量 // 日期不在同一个日期内 int stmp; int etmp; stmp = 7 - d1.get(Calendar.DAY_OF_WEEK); etmp = 7 - d2.get(Calendar.DAY_OF_WEEK); if (stmp != 0 && stmp != 6) {// 开始日期为星期六和星期日时偏移量为0 charge_start_date = stmp - 1; } if (etmp != 0 && etmp != 6) {// 结束日期为星期六和星期日时偏移量为0 charge_end_date = etmp - 1; } // } result = (getDaysBetween(this.getNextMonday(d1), this.getNextMonday(d2)) / 7) * 5 + charge_start_date - charge_end_date; //System.out.println("charge_start_date>" + charge_start_date); //System.out.println("charge_end_date>" + charge_end_date); //System.out.println("between day is-->" + betweendays); return result; } public String getChineseWeek(Calendar date) { final String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; int dayOfWeek = date.get(Calendar.DAY_OF_WEEK); // System.out.println(dayNames[dayOfWeek - 1]); return dayNames[dayOfWeek - 1]; } /** * 获得日期的下一个星期一的日期 * * @param date * @return */ public Calendar getNextMonday(Calendar date) { Calendar result = null; result = date; do { result = (Calendar) result.clone(); result.add(Calendar.DATE, 1); } while (result.get(Calendar.DAY_OF_WEEK) != 2); return result; }
/** * * @param d1 * @param d2 * @return */ public int getHolidays(Calendar d1,Calendar d2){ return this.getDaysBetween(d1, d2)-this.getWorkingDay(d1, d2);
}} 计算两个日期间的工作日
mport java.text.SimpleDateFormat; import java.util.Date; public class test {public test() { }public long fromDateStringToLong(String inVal) { //此方法计算时间毫秒 Date date = null; //定义时间类型 SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-mm-dd hh:ss"); try { date = inputFormat.parse(inVal); //将字符型转换成日期型 } catch (Exception e) { e.printStackTrace(); } return date.getTime(); //返回毫秒数 }private static String dqsj() { //此方法用于获得当前系统时间(格式类型2007-11-6 15:10:58) Date date = new Date(); //实例化日期类型 String today = date.toLocaleString(); //获取当前时间 System.out.println("获得当前系统时间 "+today); //显示 return today; //返回当前时间 }public static void main(String[] args) { String dqsj = dqsj(); //获得String dqsj = dqsj(); //获得当前系统时间 test df = new test(); //实例化方法long startT=df.fromDateStringToLong("2005-03-03 14:51:23"); //定义上机时间 long endT=df.fromDateStringToLong("2004-03-03 13:50:23"); //定义下机时间long ss=(startT-endT)/(1000); //共计秒数 int MM = (int)ss/60; //共计分钟数 int hh=(int)ss/3600; //共计小时数 int dd=(int)hh/24; //共计天数System.out.println("共"+dd+"天 准确时间是:"+hh+" 小时 "+MM+" 分钟"+ss+" 秒 共计:"+ss*1000+" 毫秒");} }
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class TestData {
public static void main(String args[]){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String s1 = "20080808";
String s2 = "20080901";
try {
Date d1 = sdf.parse(s1);
Date d2 = sdf.parse(s2);
System.out.println((d2.getTime() - d1.getTime())/(3600L*1000*24));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class TestDate {
public static void main(String args[]){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String s1 = "20080808";
String s2 = "20080901";
try {
Date d1 = sdf.parse(s1);
Date d2 = sdf.parse(s2);
Calendar c1=Calendar.getInstance();
c1.setTime(d1);
Calendar c2=Calendar.getInstance();
c2.setTime(d2);
System.out.print(c1.get(Calendar.DAY_OF_YEAR)-c2.get(Calendar.DAY_OF_YEAR));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
import java.text.*; public class DisplayDateEveryday {
public static void main(String args[]){
display("2008-08-08", "2008-08-24");
}
public static void display(String dateFirst, String dateSecond){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try{
Date dateOne = dateFormat.parse(dateFirst);
Date dateTwo = dateFormat.parse(dateSecond);
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateOne);
while(calendar.getTime().before(dateTwo)){
System.out.println(dateFormat.format(calendar.getTime()));
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/justinavril/archive/2008/09/06/2891266.aspx
package com.softeem.paixu;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class TestDate {
public static void main(String args[]) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String s1 = "20080808";
String s2 = "20080901";
try {
Date d1 = sdf.parse(s1);
Date d2 = sdf.parse(s2);
Calendar c1 = Calendar.getInstance();
c1.setTime(d1);
Calendar c2 = Calendar.getInstance();
c2.setTime(d2);
System.out.print(c1.get(Calendar.DAY_OF_YEAR)- c2.get(Calendar.DAY_OF_YEAR)); } catch (ParseException e) {
e.printStackTrace();
} }
}
import java.text.*;public class DisplayDateEveryday {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
public static void main(String args[]) { String dateFirst = "20080808";
String dateSecond = "20090924";
display(dateFirst, dateSecond);
displayAdd(dateFirst, dateSecond);
castDate(dateFirst, dateSecond);
}
public static void castDate(String dateFirst, String dateSecond) {
try {
Date d1 = sdf.parse(dateFirst);
Date d2 = sdf.parse(dateSecond);
System.out.println("日期之差为:\t" + (d2.getTime() - d1.getTime())/(3600L*1000*24));
} catch (ParseException e) {
e.printStackTrace();
} } public static void display(String dateFirst, String dateSecond) {
try {
Date dateOne = sdf.parse(dateFirst);
Date dateTwo = sdf.parse(dateSecond); Calendar calendar = Calendar.getInstance(); calendar.setTime(dateOne);
int i = 0;
while (calendar.getTime().before(dateTwo)) {
System.out.println(sdf.format(calendar.getTime()));
i ++;
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void displayAdd(String dateFirst, String dateSecond){
try {
Date d1 = sdf.parse(dateFirst);
Date d2 = sdf.parse(dateSecond);
Calendar c1=Calendar.getInstance();
c1.setTime(d1);
Calendar c2=Calendar.getInstance();
c2.setTime(d2);
System.out.println("displayAdd == " + (c2.get(Calendar.DAY_OF_YEAR)-c1.get(Calendar.DAY_OF_YEAR)));
} catch (ParseException e) {
e.printStackTrace();
}
}}
Long s2 = new Long("20080901");
Long datetime =s2-s1;
int second = new Long(datetime / 1000).intValue();
int day = second / (3600 * 24);
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 计算任意2个日期内的工作日(没有考虑到国定假日)
* @author user
*
*/
public class DateCal { /**
* @param args
*/
public static void main(String[] args) {
try { String strDateStart = "2006-10-1";
String strDateEnd = "2006-10-14";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date_start = sdf.parse(strDateStart);
Date date_end = sdf.parse(strDateEnd);
DateCal app = new DateCal();
Calendar cal_start = Calendar.getInstance();
Calendar cal_end = Calendar.getInstance();
cal_start.setTime(date_start);
cal_end.setTime(date_end);
System.out.println("星期-->" + app.getChineseWeek(cal_start)
+ " 日期-->" + cal_start.get(Calendar.YEAR) + "-"
+ (cal_start.get(Calendar.MONTH) + 1) + "-"
+ cal_start.get(Calendar.DAY_OF_MONTH));
System.out.println("星期-->" + app.getChineseWeek(cal_end) + " 日期-->"
+ cal_end.get(Calendar.YEAR) + "-"
+ (cal_end.get(Calendar.MONTH) + 1) + "-"
+ cal_end.get(Calendar.DAY_OF_MONTH));
System.out.println("工作日为-->"
+ app.getWorkingDay(cal_start, cal_end));
System.out.println("休息日-->"+app.getHolidays(cal_start, cal_end));
} catch (Exception e) {
// TODO: handle exception
}
} public int getDaysBetween(java.util.Calendar d1, java.util.Calendar d2) {
if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end
java.util.Calendar swap = d1;
d1 = d2;
d2 = swap;
}
int days = d2.get(java.util.Calendar.DAY_OF_YEAR)
- d1.get(java.util.Calendar.DAY_OF_YEAR);
int y2 = d2.get(java.util.Calendar.YEAR);
if (d1.get(java.util.Calendar.YEAR) != y2) {
d1 = (java.util.Calendar) d1.clone();
do {
days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR);
d1.add(java.util.Calendar.YEAR, 1);
} while (d1.get(java.util.Calendar.YEAR) != y2);
}
return days;
} /**
* 计算2个日期之间的相隔天数
* @param d1
* @param d2
* @return
*/
public int getWorkingDay(java.util.Calendar d1, java.util.Calendar d2) {
int result = -1;
if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end
java.util.Calendar swap = d1;
d1 = d2;
d2 = swap;
} int betweendays = getDaysBetween(d1, d2);
int charge_date = 0;
int charge_start_date = 0;//开始日期的日期偏移量
int charge_end_date = 0;//结束日期的日期偏移量
// 日期不在同一个日期内
int stmp;
int etmp;
stmp = 7 - d1.get(Calendar.DAY_OF_WEEK);
etmp = 7 - d2.get(Calendar.DAY_OF_WEEK);
if (stmp != 0 && stmp != 6) {// 开始日期为星期六和星期日时偏移量为0
charge_start_date = stmp - 1;
}
if (etmp != 0 && etmp != 6) {// 结束日期为星期六和星期日时偏移量为0
charge_end_date = etmp - 1;
}
// }
result = (getDaysBetween(this.getNextMonday(d1), this.getNextMonday(d2)) / 7)
* 5 + charge_start_date - charge_end_date;
//System.out.println("charge_start_date>" + charge_start_date);
//System.out.println("charge_end_date>" + charge_end_date);
//System.out.println("between day is-->" + betweendays);
return result;
} public String getChineseWeek(Calendar date) {
final String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五",
"星期六" }; int dayOfWeek = date.get(Calendar.DAY_OF_WEEK); // System.out.println(dayNames[dayOfWeek - 1]);
return dayNames[dayOfWeek - 1]; } /**
* 获得日期的下一个星期一的日期
*
* @param date
* @return
*/
public Calendar getNextMonday(Calendar date) {
Calendar result = null;
result = date;
do {
result = (Calendar) result.clone();
result.add(Calendar.DATE, 1);
} while (result.get(Calendar.DAY_OF_WEEK) != 2);
return result;
}
/**
*
* @param d1
* @param d2
* @return
*/
public int getHolidays(Calendar d1,Calendar d2){
return this.getDaysBetween(d1, d2)-this.getWorkingDay(d1, d2);
}}
计算两个日期间的工作日
import java.util.Date;
public class test {public test() {
}public long fromDateStringToLong(String inVal) { //此方法计算时间毫秒
Date date = null; //定义时间类型
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-mm-dd hh:ss");
try {
date = inputFormat.parse(inVal); //将字符型转换成日期型
} catch (Exception e) {
e.printStackTrace();
}
return date.getTime(); //返回毫秒数
}private static String dqsj() { //此方法用于获得当前系统时间(格式类型2007-11-6 15:10:58)
Date date = new Date(); //实例化日期类型
String today = date.toLocaleString(); //获取当前时间
System.out.println("获得当前系统时间 "+today); //显示
return today; //返回当前时间
}public static void main(String[] args) {
String dqsj = dqsj(); //获得String dqsj = dqsj(); //获得当前系统时间
test df = new test(); //实例化方法long startT=df.fromDateStringToLong("2005-03-03 14:51:23"); //定义上机时间
long endT=df.fromDateStringToLong("2004-03-03 13:50:23"); //定义下机时间long ss=(startT-endT)/(1000); //共计秒数
int MM = (int)ss/60; //共计分钟数
int hh=(int)ss/3600; //共计小时数
int dd=(int)hh/24; //共计天数System.out.println("共"+dd+"天 准确时间是:"+hh+" 小时 "+MM+" 分钟"+ss+" 秒 共计:"+ss*1000+" 毫秒");}
}