我这段代码是要返回是否是周六、周日的代码,运行没有问题,但是判断的不对呢,4月1日命名是周日,但是返回来的值是周一!!为什么呢!!
package compara_time;
import java.text.*;
import java.util.Date;
import java.util.Calendar;
//import java.util.Set;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class Compara_Time {
private String v_btime;
private String v_etime;
public Compara_Time() {
}
public void setTime(String a,String b){//初始化时间
v_btime=a;
v_etime=b;
}
public String Compara_Result(String begin,String end) throws Exception{
String result="0";
SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String beginTime=begin; //指定一个字符串
String endTime=end; //指定一个字符串
String begin_work="";
String end_work="";
int day=0;
int day1=0;
//取日期是否是周末
Calendar ca = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
try{
System.out.print(beginTime+"beginTime");
if ( beginTime.equals("") || beginTime==null){
result ="00";
}
else{
Date dt1= df.parse(beginTime);
ca.setTime(dt1);
day = ca.get(ca.DAY_OF_WEEK);
System.out.print(day+"day");
if(day == ca.SUNDAY || day == ca.SATURDAY){ //周六周日
result = "100";
}
else{
begin_work = beginTime.substring(0, 11) + v_btime;//"8:40:00";//时间在8:40前
if (bartDateFormat.parse(begin_work).getTime() >=
bartDateFormat.parse(beginTime).getTime()) {
result = result + "1";
}
else {
result = result + "0";
} }
}
if(endTime.equals("") || endTime==null){
if(!result.equals("100")){//周六周日
result =result+"0";
}
}else
{
ca.clear();
Date dt2= df.parse(endTime);
ca.setTime(dt2);
day1 = ca.get(ca.DAY_OF_WEEK);
if(!result.equals("100"))
{
end_work=endTime.substring(0,11)+v_etime;//"17:15:00";//时间在17:15后
if (bartDateFormat.parse(end_work).getTime() <=
bartDateFormat.parse(endTime).getTime()) {
result = result + "1";
}
else {
result = result + "0";
}
}
} return result;
}catch(Exception e)
{System.out.println("Compara_Result():" + e.getMessage());return "";}
}
}
package compara_time;
import java.text.*;
import java.util.Date;
import java.util.Calendar;
//import java.util.Set;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class Compara_Time {
private String v_btime;
private String v_etime;
public Compara_Time() {
}
public void setTime(String a,String b){//初始化时间
v_btime=a;
v_etime=b;
}
public String Compara_Result(String begin,String end) throws Exception{
String result="0";
SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String beginTime=begin; //指定一个字符串
String endTime=end; //指定一个字符串
String begin_work="";
String end_work="";
int day=0;
int day1=0;
//取日期是否是周末
Calendar ca = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
try{
System.out.print(beginTime+"beginTime");
if ( beginTime.equals("") || beginTime==null){
result ="00";
}
else{
Date dt1= df.parse(beginTime);
ca.setTime(dt1);
day = ca.get(ca.DAY_OF_WEEK);
System.out.print(day+"day");
if(day == ca.SUNDAY || day == ca.SATURDAY){ //周六周日
result = "100";
}
else{
begin_work = beginTime.substring(0, 11) + v_btime;//"8:40:00";//时间在8:40前
if (bartDateFormat.parse(begin_work).getTime() >=
bartDateFormat.parse(beginTime).getTime()) {
result = result + "1";
}
else {
result = result + "0";
} }
}
if(endTime.equals("") || endTime==null){
if(!result.equals("100")){//周六周日
result =result+"0";
}
}else
{
ca.clear();
Date dt2= df.parse(endTime);
ca.setTime(dt2);
day1 = ca.get(ca.DAY_OF_WEEK);
if(!result.equals("100"))
{
end_work=endTime.substring(0,11)+v_etime;//"17:15:00";//时间在17:15后
if (bartDateFormat.parse(end_work).getTime() <=
bartDateFormat.parse(endTime).getTime()) {
result = result + "1";
}
else {
result = result + "0";
}
}
} return result;
}catch(Exception e)
{System.out.println("Compara_Result():" + e.getMessage());return "";}
}
}
public final static int MONDAY = 2;
public final static int TUESDAY = 3;
public final static int WEDNESDAY = 4;
public final static int THURSDAY = 5;
public final static int FRIDAY = 6;
public final static int SATURDAY = 7;
改成:
day = ca.get(ca.DAY_OF_WEEK)-1;
public static final int DAY_OF_WEEKget 和 set 的字段数字,指示一个星期中的某天。该字段可取的值为 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY。 另请参见:
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, 常量字段值--------------------------------------------------------------------------------DAY_OF_WEEK_IN_MONTH
public static final int DAY_OF_WEEK_IN_MONTHget 和 set 的字段数字,指示当前月中的第几个星期。与 DAY_OF_WEEK 字段一起使用时,就可以惟一地指定某月中的某一天。与 WEEK_OF_MONTH 和 WEEK_OF_YEAR 不同,该字段的值并不 取决于 getFirstDayOfWeek() 或 getMinimalDaysInFirstWeek()。DAY_OF_MONTH 1 到 7 总是对应于 DAY_OF_WEEK_IN_MONTH 1;8 到 14 总是对应于 DAY_OF_WEEK_IN_MONTH 2,依此类推。DAY_OF_WEEK_IN_MONTH 0 表示 DAY_OF_WEEK_IN_MONTH 1 之前的那个星期。负值是从一个月的末尾开始反向计数,因此,一个月的最后一个星期天被指定为 DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1。因为负值是反向计数的,所以它们在月份中的对齐方式通常与正值的不同。例如,如果一个月有 31 天,那么 DAY_OF_WEEK_IN_MONTH -1 将与 DAY_OF_WEEK_IN_MONTH 5 和 DAY_OF_WEEK_IN_MONTH 4 的末尾相重叠。 另请参见:
DAY_OF_WEEK, WEEK_OF_MONTH, 常量字段值API上面都有的,看看就知道啦,嘿嘿