java - 使用日历填写空日期

标签 java date datetime

我正在尝试创建一个基于用户的开始日期和结束日期的日期列表。这是我的数组中的信息:

Calendar start = new GregorianCalendar(2015, 01, 01);
Calendar end = new GregorianCalendar(2015, 05, 01);
//User defined start and end time simulation

List<Calendar> datesinDB = new ArrayList<Calendar>();
datesinDB.add(new GregorianCalendar(2015,02,15));
datesinDB.add(new GregorianCalendar(2015,02,16));
datesinDB.add(new GregorianCalendar(2015,02,17));
datesinDB.add(new GregorianCalendar(2015,02,19));
datesinDB.add(new GregorianCalendar(2015,02,20));
datesinDB.add(new GregorianCalendar(2015,02,22));
datesinDB.add(new GregorianCalendar(2015,03,10));
datesinDB.add(new GregorianCalendar(2015,03,25));
datesinDB.add(new GregorianCalendar(2015,03,27));
//This is the data that I have in my simulated database

我的代码:

Calendar c = datesinDB.get(count-1);
    for(int i = 1; i < datesinDB.get(0).getActualMaximum(datesinDB.get(0).DAY_OF_MONTH); i++){
        if(i == c.get(5) && count < datesinDB.size())
        {

            revised.add(new GregorianCalendar(c.YEAR, c.MONTH, c.get(5)));
            System.out.println(c.get(5));
            c = datesinDB.get(count++);
        }
        else
        {
            revised.add(new GregorianCalendar(c.YEAR, c.MONTH, i));
        }
    }

输出:

Tue Feb 01 00:00:00 SGT 1
Wed Feb 02 00:00:00 SGT 1
Thu Feb 03 00:00:00 SGT 1
Fri Feb 04 00:00:00 SGT 1
Sat Feb 05 00:00:00 SGT 1
Sun Feb 06 00:00:00 SGT 1
Mon Feb 07 00:00:00 SGT 1
Tue Feb 08 00:00:00 SGT 1
Wed Feb 09 00:00:00 SGT 1
Thu Feb 10 00:00:00 SGT 1
Fri Feb 11 00:00:00 SGT 1
Sat Feb 12 00:00:00 SGT 1
Sun Feb 13 00:00:00 SGT 1
Mon Feb 14 00:00:00 SGT 1
Tue Feb 15 00:00:00 SGT 1
Wed Feb 16 00:00:00 SGT 1
Thu Feb 17 00:00:00 SGT 1
Fri Feb 18 00:00:00 SGT 1
Sat Feb 19 00:00:00 SGT 1
Sun Feb 20 00:00:00 SGT 1
Mon Feb 21 00:00:00 SGT 1
Tue Feb 22 00:00:00 SGT 1
Wed Feb 23 00:00:00 SGT 1
Thu Feb 24 00:00:00 SGT 1
Fri Feb 25 00:00:00 SGT 1
Sat Feb 26 00:00:00 SGT 1
Sun Feb 27 00:00:00 SGT 1
Mon Feb 28 00:00:00 SGT 1

我的问题是我的代码只能在一个月内执行此操作,而不能再继续了。有办法解决这个问题吗?

最佳答案

使用常量是不好的形式,请在 Calendar 类中查找要使用的常量的符号名称。

这就是我认为你想要的:

final Calendar start = Calendar.getInstance(2015, 1, 1);
final Calendar end = Calendar.getInstance(2015, 5, 1);
final List<Calendar> dates = new ArrayList<>(128);  // 128: fewer reallocations

for (Calendar date = start; !date.after(end); date.add(Calendar.DATE, 1)) {
  dates.add(date);
}

关于java - 使用日历填写空日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36105851/

相关文章:

python - UTC 到给定国家/地区首字母缩写的本地时间

mysql - 如何将 MySQL DateTime(不是 TIMESTAMP)的默认值设置为 NOW() 或 Current_DateTIme?

java - 以毫秒为单位解析 CIM_DateTime 到 Java Date

java - 对于此 REST 端点,404 或 401 合适的响应是什么

java - Simpledateformat 不可解析的日期

javascript - moment.js 连接日期和时间

c# - 使用 NodaTime 的明确 DateTime 表示——这可以用更少的仪式来完成吗?

java - 在 Java 中调用 ExecutorService.shutDown()

java - 正则表达式 Sublime 到 Java 正则表达式

sql - 从 View 中的字符串转换日期和/或时间时转换失败