【发布时间】:2019-10-31 18:08:31
【问题描述】:
我有一个 ArrayList,我想输入 Instant,但无论我尝试对数组做什么,它都不允许我将其转换为 Instant 格式。错误在于它尝试将字符串添加到 Instant 的 ArrayList。
@Data
@RequiredArgsConstructor
@AllArgsConstructor
public static class LiveData {
private final String location;
private final String metric;
private Double data = null;
private Instant timestamp = null;
}
private void onConnectionOpened() {
try {
int i = 0;
final List<Sensor> sensors = clientConnection.querySensors().get();
final List<String> metric = sensors.stream().map(sensor -> sensor.getLocation()).collect(Collectors.toList());
final List<String> location = sensors.stream().map(sensor -> sensor.getMetric()).collect(Collectors.toList());
List<Instant> timestamps = new ArrayList<>();
List<Instant> times = new ArrayList<>();
List<Double> datavalues = new ArrayList<>();
while (i < sensors.size()) {
final DataPoint data = clientConnection.queryValue(new Sensor(location.get(i), metric.get(i))).get();
timestamps.add((Util.TIME_FORMAT.format((new Date(data.getTime()).toInstant()))));
datavalues.add(data.getValue());
i++;
}
i = 0;
List<LiveData> testcol = new ArrayList<>();
while (i < sensors.size()) {
//LiveData temporary = new LiveData(location.get(i), metric.get(i));
LiveData temporary = new LiveData(location.get(i), metric.get(i), datavalues.get(i), timestamps.get(i));
testcol.add(temporary);
i++;
}
ObservableList<LiveData> livedata = FXCollections.observableArrayList(testcol);
Platform.runLater(() ->
tvData.setItems(livedata));
//Thread.sleep(10000);
//onConnectionOpened();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
我希望能够拥有 Instant 的 ArrayList,而不是像这样使用它:
LiveData temporary = new LiveData(location.get(i), metric.get(i), datavalues.get(i), timestamps.get(i));
供以后在 TableView 中使用。
我正在格式化 Instant 对象。我使用该格式是为了更好地输出实际时间戳,因为现在它看起来像这样:2019-07-18T05:35:00Z。我希望它是 2019-07-18 07:35:00。
【问题讨论】:
-
Util.TIME_FORMAT的类型是什么?你为什么要格式化Instant对象呢?Instant不能有格式。请问create a Minimal, Reproducible Example好吗? -
我使用这种格式是为了更好地输出实际时间戳,因为现在它看起来像这样:
2019-07-18T05:35:00Z。我希望它是2019-07-18 07:35:00。我提供了更多代码。 -
对不起,如果我不清楚,我不打算要求 more 代码。一个最小的、可重现的例子更多是关于剥离代码中不直接有助于演示所问问题的部分。 Please read the text in the link。很高兴知道您接下来关于 Stack Overflow 的许多问题。
标签: java datetime arraylist java.time.instant