import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class Test2 {    public Date getThisMonday() {
        return getMonday(new Date());
    }    public Date getMonday(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
        cal.add(Calendar.DATE, (dayOfWeek - 2) * (-1));
        return cal.getTime();
    }    public static void main(String[] args) {
        Test2 t = new Test2();
        Date d = t.getThisMonday();
        System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(d));
    }
}

解决方案 »

  1.   

    usabcd(9号公路上的3名共军) 的程序有点问题,
    在处理星期日时
      

  2.   

    cal.add(Calendar.DATE, -(dayOfWeek - cal.getFirstDayOfWeek()));
      

  3.   

    Calendar cal = Calendar.getInstance();
         cal.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
         System.out.println(cal.getTime());
      

  4.   

    好像星期日是一周的第一天,呵呵。奇怪,那么多喜欢up、gz的哪去了?
      

  5.   

    usabcd(9号公路上的3名共军) 你的程序简单明了,PFPF。但既然星期日是一周的第一天,那楼主要的就是周日的日期,cal.add(Calendar.DATE, (dayOfWeek - 2) * (-1))中dayOfWeek - 2好象就该改为dayOfWeek - 1,这样结果才正确。
      

  6.   

    我觉着如果认为星期日是一周的第一天可以用下面这个程序:
    import java.util.*;public class FirstDayS
    {
    public static void main (String[] args)
    {
    GregorianCalendar t =new GregorianCalendar();
    t.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
    System.out.println(t.get(t.YEAR)+"-"+(t.get(t.MONTH)+1)+"-"+t.get(t.DATE));  
    }
    }如果认为星期一是一周的第一天,则只需把上面程序中的Calendar.SUNDAY改为Calendar.MONDAY即可,程序如下:import java.util.*;public class FirstDayM
    {
    public static void main (String[] args)
    {
    GregorianCalendar t =new GregorianCalendar();
    t.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
    System.out.println(t.get(t.YEAR)+"-"+(t.get(t.MONTH)+1)+"-"+t.get(t.DATE));
    }
    }
    //最后输出的方法笨了点,但用起来很方便。
      

  7.   

    dearsn() 
    说得不错。学习
      

  8.   

    /*
     * 创建日期 2005-3-30
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package com.infoearth;import java.sql.Timestamp;
    import java.text.SimpleDateFormat;
    import java.util.*;
    /**
     * @李春雷
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public class ManageWeek {
    boolean isSameWeekDates(Date date1, Date date2) {
    Calendar cal1 = Calendar.getInstance();
    Calendar cal2 = Calendar.getInstance();
    cal1.setTime(date1);
    cal2.setTime(date2);
    int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
    if (0 == subYear) {
      if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
    return true;
    }
    else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
      // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
      if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
    return true;
    }
    else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
      if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
    return true;
    }
    return false;
    }

     String getSeqWeek(){
    Calendar c = Calendar.getInstance(Locale.CHINA);
    String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
    if(week.length()==1)week = "0" + week;
    String year = Integer.toString(c.get(Calendar.YEAR));
    return year+week;
    }
     
    public String getMonday(Date date){
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
    return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    }

    public String getFriday(Date date){
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
    return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    }
     
     public static void main(String[] args){
      ManageWeek a = new ManageWeek();
      System.out.println(a.getSeqWeek());
      System.out.println("本周一是"+a.getMonday(new Date()));
      System.out.println("本周五是"+a.getFriday(new Date()));
     }}
      

  9.   

    import java.util.*;
    public class Hello{
        public static void main(String[] args){
            Date date = new Date();
            Calendar cal=new GregorianCalendar();
            long time1 = date.getTime();
            cal.setTimeInMillis(time1);
            int week=cal.get(Calendar.DAY_OF_WEEK);
            long time2 = time1 - (week-1)*24*3600*1000;
            date.setTime(time2);
            System.out.println(date);
            System.out.println(time2/1000);
            
        }
    }