簡體   English   中英

Java - 在當前時間和未來設置時間之間創建一個時間間隔(15分鍾)的數組

[英]Java - Create an array of times (15 minute) intervals between current time and a future set time

我正在嘗試創建一個從當前時間到設定時間的數組,例如; 當前時間是15:41,我希望將其四舍五入到最接近的一刻鍾(15:45),並且從15:45到指定時間創建一個15分鍾的間隔數組,可以說23: 30。

我設法以15分鍾的間隔創建一個24小時的數組,似乎無法進一步前進。

String[] quarterHours = {"00","15","30","45"};
    String[] times = new String[24];

    for(int i = 0; i < 24; i++) {
        for(int j = 0; j < 4; j++) {
            String time = i + ":" + quarterHours[j];
            if(i < 10) {
                time = "0" + time;
            }
            times[i] = "Today " + time;
        }
    }

Android中DialogList視圖中的上述輸出如下所示:

在此輸入圖像描述

你正在覆蓋內循環的每個循環的時間。 您應該使用List<String>而只是追加而不必擔心索引,如下所示:

String[] quarterHours = {"00","15","30","45"};
List<String> times = new ArrayList<String>; // <-- List instead of array

for(int i = 0; i < 24; i++) {
    for(int j = 0; j < 4; j++) {
        String time = i + ":" + quarterHours[j];
        if(i < 10) {
            time = "0" + time;
        }
        times.add("Today " + time); // <-- no need to care about indexes
    }
}

使用內置的Date / Time API,特別是LocalTime ,會容易得多:

LocalTime time = LocalTime.now();

int minute = time.getMinute();

if (minute > 45) {
    time = time.plusHours(1L).withMinute(0);
} else {
    time = time.withMinute(minute < 30 ? minute < 15 ? 15 : 30: 45);
}

Stream.iterate(time.truncatedTo(ChronoUnit.MINUTES), t -> t.plusMinutes(15L))
      .limit(5)
      .forEach(System.out::println);

上面的代碼輸出如下:

11:00
11:15
11:30
11:45
12:00

你的工作就是弄清楚限制Stream大小的數學。

試試這個。 在這種情況下,按times[i]將項目插入數組是不正確的。 它只計算第一個循環項

public class Main
{
  public static void main(String[] args)
  {
    String[] quarterHours = { "00", "15", "30", "45" };
    String[] times = new String[96];
    int count = 0;

    for (int i = 0; i < 24; i++)
    {
      for (int j = 0; j < 4; j++)
      {
        String time = i + ":" + quarterHours[j];
        if (i < 10)
        {
          time = "0" + time;
        }
        times[count] = "Today " + time;
        count++;
      }
    }

    for (int i = 0; i < times.length; i++)
    {
      System.out.println(times[i]);
    }
  }
}

之前方法中的問題是最后一分鍾轉彎獲勝並覆蓋之前的任何結果。

我建議使用List ,它更容易處理。 你不需要照顧大小。

    String[] quarterHours = { "00", "15", "30", "45" };
    List<String> times = new ArrayList<>();

    for (int i = 0; i < 24; i++) {
        for (int j = 0; j < 4; j++) {
            String time = i + ":" + quarterHours[j];
            if (i < 10) {
                time = "0" + time;
            }
            times.add("Today " + time);
        }
    }
    System.out.println(times);

輸出:

[Today 00:00, Today 00:15, Today 00:30, Today 00:45, Today 01:00, Today 01:15, Today 01:30, Today 01:45, Today 02:00, Today 02:15, Today 02:30, Today 02:45, Today 03:00, Today 03:15, Today 03:30, Today 03:45, Today 04:00, Today 04:15, Today 04:30, Today 04:45, Today 05:00, Today 05:15, Today 05:30, Today 05:45, Today 06:00, Today 06:15, Today 06:30, Today 06:45, Today 07:00, Today 07:15, Today 07:30, Today 07:45, Today 08:00, Today 08:15, Today 08:30, Today 08:45, Today 09:00, Today 09:15, Today 09:30, Today 09:45, Today 10:00, Today 10:15, Today 10:30, Today 10:45, Today 11:00, Today 11:15, Today 11:30, Today 11:45, Today 12:00, Today 12:15, Today 12:30, Today 12:45, Today 13:00, Today 13:15, Today 13:30, Today 13:45, Today 14:00, Today 14:15, Today 14:30, Today 14:45, Today 15:00, Today 15:15, Today 15:30, Today 15:45, Today 16:00, Today 16:15, Today 16:30, Today 16:45, Today 17:00, Today 17:15, Today 17:30, Today 17:45, Today 18:00, Today 18:15, Today 18:30, Today 18:45, Today 19:00, Today 19:15, Today 19:30, Today 19:45, Today 20:00, Today 20:15, Today 20:30, Today 20:45, Today 21:00, Today 21:15, Today 21:30, Today 21:45, Today 22:00, Today 22:15, Today 22:30, Today 22:45, Today 23:00, Today 23:15, Today 23:30, Today 23:45]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM