当前位置: 代码迷 >> J2SE >> 返回日期有关问题
  详细解决方案

返回日期有关问题

热度:58   发布时间:2016-04-24 13:03:13.0
返回日期问题
1.要求输出2008-03-29 至 2008-05-21 里面所有的日期。
2.要求输出2008-03-29 至 2008-05-21 里面所有的日期(除去星期六,星期天)。
请求以上两个函数。

------解决方案--------------------
Java code
//第一个import java.text.SimpleDateFormat;import java.util.Calendar;public class MyObject {    public static void main(String[] args) {        // 2008-03-29 至 2008-05-21        SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd");        Calendar c1 = Calendar.getInstance();        Calendar c2 = Calendar.getInstance();        c1.set(2008,2,29);        c2.set( 2008,4,21);        int days = c2.get(Calendar.DAY_OF_YEAR) - c1.get(Calendar.DAY_OF_YEAR);        for (int i = 0; i <= days; i++) {            System.out.println(sm.format(c1.getTime()));            c1.add( Calendar.DATE,1);        }    }}
------解决方案--------------------
Java code
public void printDate(Date begin, Date end)  {    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");    while (begin.before(end))    {      System.out.println(sdf.format(begin));    }    System.out.println(sdf.format(end));  }  public void printDateWithoutWeekends(Date begin, Date end)  {    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");    Calendar cal = GregorianCalendar.getInstance();    while (begin.before(end))    {            cal.setTime(begin);      if (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY          && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)        System.out.println(sdf.format(begin));    }    cal.setTime(end);    if (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY        && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)      System.out.println(sdf.format(end));  }
------解决方案--------------------
Java code
public class DateTest {    private static Calendar from = Calendar.getInstance();    private static Calendar to = Calendar.getInstance();    public DateTest() {    }    /**     * 初始化两个起始日期     *     */    private void init() {        from.set(2008, 2, 29);        to.set(2008, 4, 21);    }    /**     * 要求输出2008-03-29 至 2008-05-21 里面所有的日期。     *     */    public void all() {        init();        // 如果起始日期一直在结束日期之前,循环继续        while (from.before(to)) {            printlnCalendar(from);            // 日期增一            from.add(Calendar.DATE, 1);        }    }    /**     * 要求输出2008-03-29 至 2008-05-21 里面所有的日期(除去星期六,星期天)     *     */    public void withoutWeekend() {        init();        // 用来标志是星期几的        int dayOfWeek = 0;        while (from.before(to)) {            // 得到from日期的星期            dayOfWeek = from.get(Calendar.DAY_OF_WEEK);            if (dayOfWeek != Calendar.SATURDAY && dayOfWeek != Calendar.SUNDAY) {                printlnCalendar(from);            }            // 日期增一            from.add(Calendar.DATE, 1);        }    }    private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");    /**     * 打印日期,格式"年-月-日"     */    private void printlnCalendar(Calendar c) {        System.out.println(format.format(c.getTime()));    }    public static void main(String[] args) {        DateTest dt = new DateTest();        dt.all();        dt.withoutWeekend();    }}
------解决方案--------------------
楼主说有些错误 是说不能包括 “2008-05-21” 吧?

Java code
void getDate(String d1,String d2) throws ParseException{        SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");        Calendar c1=Calendar.getInstance();        Calendar c2=Calendar.getInstance();        c1.setTime(sd.parse(d1));        c2.setTime(sd.parse(d2));        c2.add(Calendar.DAY_OF_YEAR,-1);        while(c1.before(c2)){            c1.add(Calendar.DAY_OF_YEAR, 1);            int day=c1.get(Calendar.DAY_OF_WEEK);            //if(day!=Calendar.SUNDAY&&day!=Calendar.SATURDAY)  (除去星期六,星期天)                System.out.println(sd.format(c1.getTime()));        }            }
  相关解决方案