Как получить массив меток времени, каждые пол секунды?
Возникла такая потребность, получить массив меток времени, каждые пол секунды.
Как это реализовать?
То есть массив должен содержать строки такого вида "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());