请教问题
如何判断 2013-8-1 和 2013-8-4号 是否在同一个自然周内(8.1周四 8.4周日则是同一周,8.5周一,则不是)?
来,比比短...
[code="java"]
public static void main(String[] args) throws Exception {
DateFormat df = new SimpleDateFormat("yyyy-M-d");
System.out.println(isSameWeek(df.parse("2013-8-1"), df.parse("2013-8-4")));
System.out.println(isSameWeek(df.parse("2013-8-1"), df.parse("2013-8-5")));
}
public static boolean isSameWeek(Date d1, Date d2) {
SimpleDateFormat format = new SimpleDateFormat("yyyyww");
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
format.setCalendar(c);
return format.format(d1).equals(format.format(d2));
}
[/code]
package com.in;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Caculate {
/**
* @param args
*/
public static void main(String[] args) {
DateFormat df = new SimpleDateFormat("yyyy-M-d");
Date date1;
try {
date1 = df.parse("2013-8-1");
Date date2 = df.parse("2013-8-4");
boolean isSame = isSameWeek(date1,date2);
System.out.println("isSame == " +isSame);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static boolean isSameYear(Date date1,Date date2){
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
int year = cal.get(Calendar.YEAR);
cal.setTime(date2);
int year2 = cal.get(Calendar.YEAR);
return year == year2;
}
public static boolean isSameWeek(Date date1,Date date2){
boolean isSameYear = isSameYear(date1,date2);
if(isSameYear)
return getWeek(date1) == getWeek(date2);
return false;
}
public static int getWeek(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setMinimalDaysInFirstWeek(7);
return cal.get(Calendar.WEEK_OF_YEAR);
}
}
[code="java"]
package com.zyn.iteye;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateTest {
public static long beforeDay(Date d1,Date d2){
long a= d1.getTime();
long b = d2.getTime();
long c = (b-a)/(24*3600*1000);
return c;
}
public static boolean getFirstDate(Date d,Date d2){
boolean flag = false;
Calendar c = Calendar.getInstance();
c.set(d.getYear(), d.getMonth(), d.getDay());
c.setFirstDayOfWeek(Calendar.SUNDAY);
int week = c.get(Calendar.DAY_OF_WEEK)-1;
if(week==0){
week = 7;
}
Calendar c2 = Calendar.getInstance();
c2.set(d2.getYear(), d2.getMonth(), d2.getDay());
c2.setFirstDayOfWeek(Calendar.SUNDAY);
int week2 = c2.get(Calendar.DAY_OF_WEEK)-1;
if(week2==0){
week2 = 7;
}
long day = beforeDay(d,d2);
System.out.println(day+"#"+week+"#"+week2);
if(day>=7 || day<=-7){
flag = false;
}else{
if(day>0&&(7-week)>=(week2-week)){
flag = true;
}else if(day==0){
flag = true;
}else if(day<0 && week>week2){
flag = true;
}
}
return flag;
}
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
boolean flag = DateTest.getFirstDate(sdf.parse("2013-08-12"), sdf.parse("2013-08-18"));
System.out.println(flag);
boolean flag1 = DateTest.getFirstDate(sdf.parse("2013-08-13"), sdf.parse("2013-08-12"));
System.out.println(flag1);
boolean flag2 = DateTest.getFirstDate(sdf.parse("2013-08-13"), sdf.parse("2013-08-11"));
System.out.println(flag2);
boolean flag3 = DateTest.getFirstDate(sdf.parse("2013-08-12"), sdf.parse("2013-08-06"));
System.out.println(flag3);
boolean flag4 = DateTest.getFirstDate(sdf.parse("2013-08-04"), sdf.parse("2013-08-01"));
System.out.println(flag4);
}
}
[/code]
这个问题早就有人问过了,java、js的都有,如下:
[url]http://www.iteye.com/problems/94095[/url]
[url]http://www.iteye.com/problems/94249[/url]