4

我正在尝试获取 3 个单独的整数输入(年、月、日)并获取这 3 个条目并从中形成一个日期对象,以便我可以使用它来比较其他日期。

到目前为止,这就是我所拥有的,不知从何而来:

public void compareDates() {

    String dayString = txtOrderDateDay.getText();
    String monthString = txtOrderDateMonth.getText();
    String yearString = txtOrderDateYear.getText();

    int day = Integer.parseInt(dayString);
    int month = Integer.parseInt(monthString);
    int year = Integer.parseInt(yearString);
}

非常感谢您提供的任何帮助。

4

3 回答 3

4

试试这个,注意到月份从零开始,所以我们需要减去一个来正确指定月份:

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DATE, day);
Date date = calendar.getTime();

或这个:

Calendar calendar = Calendar.getInstance();
calendar.set(year, month-1, day);
Date date = calendar.getTime();

或这个:

Date date = new GregorianCalendar(year, month-1, day).getTime();

第一种方法为您提供更多控制权,因为它允许您在日期中设置其他字段,例如:DAY_OF_WEEK, DAY_OF_WEEK_IN_MONTH, DAY_OF_YEAR, WEEK_OF_MONTH, WEEK_OF_YEAR, MILLISECOND, MINUTE, HOUR, HOUR_OF_DAY等。

最后,为了正确格式化注释中指示的日期,请执行以下操作:

DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
String strDate = df.format(date);
于 2012-06-01T03:25:20.110 回答
3

使用公历

new GregorianCalendar(int year, int month, int dayOfMonth)
于 2012-06-01T03:22:22.023 回答
2

请参阅此库,以方便您在此类任务中的生活 - http://joda-time.sourceforge.net/

然后你要写这样的代码:

LocalDate ld = new LocalDate(int year, int monthOfYear, int dayOfMonth) ;

此类提供了许多有用的方法来进行比较和操作,例如添加分钟...在这里查看它的文档

更多关于 joda-time 的信息:

Joda-Time 为 Java 日期和时间类提供了质量替代品。该设计允许多个日历系统,同时仍提供简单的 API。“默认”日历是 XML 使用的 ISO8601 标准。格里高利、儒略、佛教、科普特、埃塞俄比亚和伊斯兰系统也包括在内,我们欢迎进一步添加。支持类包括时区、持续时间、格式和解析。

于 2012-06-01T03:35:00.587 回答