2015-11-17 42 views
1

我在根據每月條款生成每週和每月日期排定時遇到問題。無法排除小於當前日期的日期

import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import com.toedter.calendar.JDateChooser; 
import com.toedter.calendar.JMonthChooser; 

public class test extends JFrame { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 2513170924764415427 L; 
    private JPanel contentPane; 
    private JDateChooser dateChooser; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
    public void run() { 
    try { 
     test frame = new test(); 
     frame.setVisible(true); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
    }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public test() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 450, 300); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    JMonthChooser monthChooser = new JMonthChooser(); 
    monthChooser.setBounds(41, 45, 94, 20); 
    contentPane.add(monthChooser); 

    dateChooser = new JDateChooser(); 
    dateChooser.setDateFormatString("yyyy-MM-dd"); 
    dateChooser.setBounds(41, 108, 242, 30); 
    contentPane.add(dateChooser); 

    JButton btnClick = new JButton("CLICK"); 
    btnClick.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
    /*Date nextMonth = addDays(dateChooser.getDate(),7);     
    JOptionPane.showMessageDialog(null,df.format(nextMonth),null, getDefaultCloseOperation());*/ 
    /*JOptionPane.showMessageDialog(null,df.format(setDateofMonth(6)),null, getDefaultCloseOperation());*/ 

    Calendar cal = Calendar.getInstance(); 
    int monthnow = cal.get(Calendar.MONTH); 
    int yearnow = cal.get(Calendar.YEAR); 
    int daynow = cal.get(Calendar.DAY_OF_MONTH); 

    int termspermonth = 4; 
    int monthlyschedule = 4; 

    int day1 = 1; 
    int day2 = 8; 
    int day3 = 15; 
    int day4 = 22; 

    for (int x = 0; x < 4; x++) { 
     for (int i = 0; i < 31; i++) { 
     if (i == day1) { 
     System.out.println(df.format(setDateofMonth(yearnow, monthnow + x + 1, day1))); 
     } 
     if (i == day2) { 
     System.out.println(df.format(setDateofMonth(yearnow, monthnow + x + 1, day2))); 
     } 
     if (i == day3) { 
     System.out.println(df.format(setDateofMonth(yearnow, monthnow + x + 1, day3))); 
     } 
     if (i == day4) { 
     System.out.println(df.format(setDateofMonth(yearnow, monthnow + x + 1, day4))); 
     } 
     } 
    } 
    } 
    }); 
    btnClick.setBounds(110, 194, 91, 23); 
    contentPane.add(btnClick); 
    } 

    public static Date setDateofMonth(int year, int month, int day) { 
    Calendar cal = Calendar.getInstance(); 
    cal.set(year, month - 1, day); 
    System.out.println(new SimpleDateFormat("MMMM").format(cal.getTime())); 
    Date date = cal.getTime(); 
    return date; 
    } 

我的問題是我不能排除小於當前日期的日期。

當前日期是2015年11月17日。

這裏是輸出:

November 2015-11-01 
November 2015-11-08 
November 2015-11-15 
November 2015-11-22 
December 2015-12-01 
December 2015-12-08 
December 2015-12-15 
December 2015-12-22 
January 2016-01-01 
January 2016-01-08 
January 2016-01-15 
January 2016-01-22 
February 2016-02-01 
February 2016-02-08 
February 2016-02-15 
February 2016-02-22 
+0

從哪個日期開始你想要嗎? – Satya

+0

它應該是這樣的 月2015年11月22日 月2015年12月1日 月2015年12月8日 月2015年12月15日 月2015年12月22日 月2016年1月1日 月2016年1月8日 一月2016年1月15日 一月2016年1月22日 二月2016年2月1日 二月2016年2月8日 二月2016年2月15日 二月2016年2月22日 – agentOrange02

+0

它應該將於2015年11月22日開始 – agentOrange02

回答

1

您已經開始從1
天環 從當前日期開始吧。

for (int x = 0; x < 4; x++) { 
    for (int i = daynow; i < 31; i++) { 
     if (i == day1) { 
      System.out.println(df.format(setDateofMonth(yearnow, monthnow + x + 1, day1))); 
     } 
     if (i == day2) { 
      System.out.println(df.format(setDateofMonth(yearnow, monthnow + x + 1, day2))); 
     } 
     if (i == day3) { 
      System.out.println(df.format(setDateofMonth(yearnow, monthnow + x + 1, day3))); 
     } 
     if (i == day4) { 
      System.out.println(df.format(setDateofMonth(yearnow, monthnow + x + 1, day4))); 
     } 
    } 
}