Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在ArrayList中加入30分钟,如上午8:00、上午8:30、上午9:00、上午9:30等等,直到晚上9:00?_Java_Android_Date_Android Spinner_Android Calendar - Fatal编程技术网

Java 如何在ArrayList中加入30分钟,如上午8:00、上午8:30、上午9:00、上午9:30等等,直到晚上9:00?

Java 如何在ArrayList中加入30分钟,如上午8:00、上午8:30、上午9:00、上午9:30等等,直到晚上9:00?,java,android,date,android-spinner,android-calendar,Java,Android,Date,Android Spinner,Android Calendar,我想创建一个具有 上午8:00-8:308:30-9:009:00-9:30 我对ArrayList所做的时间间隔如下 ArrayList[08:00:AM, 09:00:AM, 10:00:AM, 11:00:AM, 12:00:PM, 13:00:PM, 14:00:PM, 15:00:PM, 16:00:PM, 17:00:PM, 18:00:PM, 19:00:PM, 20:00:PM, 21:00:PM] 上午8:009:0010:00 等等 我得到了类似于 ArrayList[08

我想创建一个具有

上午8:00-8:30
8:30-9:00
9:00-9:30

我对ArrayList所做的时间间隔如下

ArrayList[08:00:AM, 09:00:AM, 10:00:AM, 11:00:AM, 12:00:PM, 13:00:PM, 14:00:PM, 15:00:PM, 16:00:PM, 17:00:PM, 18:00:PM, 19:00:PM, 20:00:PM, 21:00:PM]
上午8:00
9:00
10:00

等等

我得到了类似于

ArrayList[08:00:AM, 09:00:AM, 10:00:AM, 11:00:AM, 12:00:PM, 13:00:PM, 14:00:PM, 15:00:PM, 16:00:PM, 17:00:PM, 18:00:PM, 19:00:PM, 20:00:PM, 21:00:PM]
这是我的代码:

public class MainActivity extends AppCompatActivity {

    ArrayList<String> hours = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initCustomTimeSpinner();
    }

    private void initCustomTimeSpinner() {

        Spinner spinnerCustom = (Spinner) findViewById(R.id.spinner2);

        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:a");

        SimpleDateFormat startHourFormat = new SimpleDateFormat("HH");
        cal.set(Calendar.HOUR_OF_DAY, 8);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);

        int startHour = Integer.parseInt(startHourFormat.format(cal.getTime()));
        Log.e("startHour", Integer.toString(startHour));

        Log.e("withot format Starttime", cal.getTime().toString());

        SimpleDateFormat endHourFormat = new SimpleDateFormat("HH");
        cal.set(Calendar.HOUR_OF_DAY, 21);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);

        int endHour = Integer.parseInt(endHourFormat.format(cal.getTime()));
        Log.e("endHour", Integer.toString(endHour));

        Log.e("withot format End time", cal.getTime().toString());

        String test = sdf.format(cal.getTime());
        Log.e("TEST", test);

        for (int i = startHour; i <= endHour; i++) {

            cal.set(Calendar.HOUR_OF_DAY, i);
            hours.add(sdf.format(cal.getTime()));
            System.out.println("ArrayList" + hours);
        }
    }
}
public类MainActivity扩展了AppCompatActivity{
ArrayList小时数=新建ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initCustomTimeSpinner();
}
私有void initCustomTimeSpinner(){
Spinner spinnerCustom=(Spinner)findViewById(R.id.spinner2);
Calendar cal=Calendar.getInstance();
SimpleDataFormat sdf=新的SimpleDataFormat(“HH:mm:a”);
SimpleDataFormat StartOutFormat=新的SimpleDataFormat(“HH”);
校准设置(日历小时/天,8);
校准设置(日历分钟,0);
校准设置(日历秒,0);
int startHour=Integer.parseInt(startHourFormat.format(cal.getTime());
Log.e(“startHour”,Integer.toString(startHour));
Log.e(“withot format Starttime”,cal.getTime().toString());
SimpleDataFormat endHourFormat=新的SimpleDataFormat(“HH”);
校准设置(日历小时/天,21);
校准设置(日历分钟,0);
校准设置(日历秒,0);
int endHour=Integer.parseInt(endHourFormat.format(cal.getTime());
Log.e(“endHour”,Integer.toString(endHour));
Log.e(“withot格式结束时间”,cal.getTime().toString());
字符串测试=sdf.format(cal.getTime());
Log.e(“测试”,测试);

对于(inti=startHour;i,下面是使用Java 8 time API构建时隙的简单示例:

public static void printTimeSlots(LocalTime startTime, LocalTime endTime, int slotSizeInMinutes) {
    for (LocalTime time = startTime, nextTime; time.isBefore(endTime); time = nextTime) {
        nextTime = time.plusMinutes(slotSizeInMinutes);
        if (nextTime.isAfter(endTime))
            break; // time slot crosses end time
        System.out.println(time + "-" + nextTime);
    }
}
试验

输出

08:00-08:30
08:30-09:00
09:00-09:30
09:30-10:00
10:00-10:30
10:30-11:00
11:00-11:30
11:30-12:00
12:00-12:30
12:30-13:00
13:00-13:30
13:30-14:00
14:00-14:30
14:30-15:00
15:00-15:30
15:30-16:00
16:00-16:30
16:30-17:00
测试#2,证明未对齐的结束时间

10:05-10:20
10:20-10:35
10:35-10:50
10:50-11:05
11:05-11:20
11:20-11:35
11:35-11:50
当然,如果您不想以分钟为单位限制插槽大小,可以使用
TemporalAmount
而不是分钟数:

public static void printTimeSlots(LocalTime startTime, LocalTime endTime, TemporalAmount amountToAdd) {
    for (LocalTime time = startTime, nextTime; time.isBefore(endTime); time = nextTime) {
        nextTime = time.plus(amountToAdd);
        if (nextTime.isAfter(endTime))
            break; // time slot crosses end time
        System.out.println(time + "-" + nextTime);
    }
}
试验

10:05:15-10:20:40
10:20:40-10:36:05
10:36:05-10:51:30
10:51:30-11:06:55
11:06:55-11:22:20
11:22:20-11:37:45
11:37:45-11:53:10

你到底在哪里遇到了困难?在创建半小时间隔时遇到了困难我得到了一个列表,比如上午8:00,上午9:00,但正如我提到的,我想在第一个索引中创建上午8:00-8:30,第二个索引中创建上午8:30-9:00,等等进一步的索引你尝试了什么?你到底在哪里失败了?你似乎在要求我们为你编写它,我们已经完成了JoeC我只是想问一下逻辑,我试过了,得到了8:00 am、9:00 am等列表,如果你愿意的话,我可以分享我的github linkFYI,那些麻烦的旧日期时间类,比如
java.util.date
java.util.Calendar
,和
java.text.SimpleDateFormat
,现在已经被这些类取代了。java.t的大部分ime功能在年被移植到Java 6和7。在项目中进一步适应Android。请参阅@JuanCarlosMendoza for Android,这实际上应该是
public static void printTimeSlots(LocalTime startTime, LocalTime endTime, TemporalAmount amountToAdd) {
    for (LocalTime time = startTime, nextTime; time.isBefore(endTime); time = nextTime) {
        nextTime = time.plus(amountToAdd);
        if (nextTime.isAfter(endTime))
            break; // time slot crosses end time
        System.out.println(time + "-" + nextTime);
    }
}
printTimeSlots(LocalTime.parse("10:05:15"),
               LocalTime.parse("11:55:00"),
               Duration.ofMinutes(15).plusSeconds(25));