有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不能排除小于当前日期的日期

我无法根据每月条款生成每周和每月日期计划

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月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

共 (1) 个答案

  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)));
            }
        }
    }