Как получить массив меток времени, каждые пол секунды?

Возникла такая потребность, получить массив меток времени, каждые пол секунды.

Как это реализовать?

То есть массив должен содержать строки такого вида "18:20:53.500"

172800 строк за прошлые сутки.

public class ArrayOfTimeLabels 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
        // TODO code application logic here
    }
    
    List<String> getDataX() 
    {
        List<String> data = new CopyOnWriteArrayList();
        return data;
    }
}

Что бы лучше понять что я хочу то вот DataGenerator.

Только он начинает работать с текущего времени.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Date;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 *
 * @author ALEXANDER
 */
public class DataGenerator {
    static SimpleDateFormat sdf; 
    static Date date = null;
     
    static List<Date> getListDate(int numPoints) throws ParseException {
        //System.out.println(sdf.format(date));  
        //sdf = new SimpleDateFormat("HH:mm:ss");
        
        //List<Date> data = new CopyOnWriteArrayList<Date>();
        List<Date> data = new CopyOnWriteArrayList();
        
        for (int i = 0; i < numPoints; i++) {
            sdf = new SimpleDateFormat("HH:mm:ss.S");
            Date now = new Date();
            String strDate = sdf.format(now);
            System.err.println(strDate);
            data.add(sdf.parse(strDate));
        }
        return data;
    }
    
    static List<Double> getListRandomData(int numPoints) {

        List<Double> data = new CopyOnWriteArrayList<Double>();
        for (int i = 0; i < numPoints; i++) {
            data.add(Math.random() * 100);
            }
        return data;
    }
}

Ответы (2 шт):

Автор решения: JVic

truncateTo в данном случае, обрежет все до текущего дня, и у вас получится текущий день с временем "00:00:00.000"

Instant instant = Instant.now().truncatedTo(ChronoUnit.DAYS);
for (int i = 0; i < 172800; i++) {
   instant = instant.plus(500, ChronoUnit.MILLIS);
   saveFormattedInstant(instant);
}
→ Ссылка
Автор решения: Alex Rudenko

Список меток времени LocalTime можно сгенерировать:

List<LocalTime> list = Stream.iterate(
    LocalTime.of(0, 0, 0, 0), t -> t.plusNanos(500_000_000))
        .limit(86400 * 2) // размер списка
        .collect(Collectors.toList());

Строковое представление меток времени можно получить аналогично:

DateTimeFormatter timeFormat = DateTimeFormatter.ofPattern("HH:mm:ss.SSS");

List<String> list2 = Stream.iterate(
    LocalTime.of(0, 0, 0, 0), t -> t.plusNanos(500_000_000))
        .limit(86400 * 2) // размер списка
        .map(timeFormat::format)
        .collect(Collectors.toList());
→ Ссылка