我有一個物件串列,在該物件中我有一個值時間戳,它在“時間戳”中:“2021-12-16T07:30:13.950774575Z”,這種格式。我有一個要求,當我點擊一個名為 60 分鐘的文本視圖時,我應該從結束時間獲取 60 分鐘的資料,也就是說,如果我在下午 4 點到 7 點之間有資料,點擊我需要從下午 6 點到晚上 7 點的資料。這需要減去 1 小時并過濾資料,我已經嘗試過,但我沒有得到正確的解決方案,任何人都可以幫助我如何實作。請幫助我,因為我是初學者。
uj5u.com熱心網友回復:
將所有資料放在一個串列中,然后過濾串列中過去 60 分鐘內的元素。
var now = currentTS();
var l = listOf(parseTS("2021-12-16T07:30:13.950774575Z"), parseDate(...),...);
var result = l.filter { it.inMinutes() - now.inMinutes() < 60 }
我不知道你使用的是哪種型別的時間戳類的,所以調節currentTS,parseTS,inMinutes您的需求。
uj5u.com熱心網友回復:
我會使用java.time和...
- 決議
String從按鈕點擊接收到的(當然是模擬的) - 從值中精確減去一小時
- 使用結果以從示例串列中過濾
全部都在這里fun main,請閱讀評論:
fun main(args: Array<String>) {
// your example String received on button click
val timestamp = "2021-12-16T07:30:13.950774575Z"
// example values to be filtered
val someObjects = listOf(
SomeObject(0, "2021-12-12T07:30:13.950774575Z"),
SomeObject(1, "2021-12-13T07:30:13.950774575Z"),
SomeObject(2, "2021-12-13T07:30:13.950774575Z"),
SomeObject(3, "2021-12-14T07:30:13.950774575Z"),
SomeObject(4, "2021-12-15T07:30:13.950774575Z"),
// here's the border
SomeObject(5, "2021-12-16T07:30:13.850774575Z"),
SomeObject(6, "2021-12-16T07:30:13.960774575Z"),
SomeObject(7, "2021-12-17T07:30:13.950774575Z"),
SomeObject(8, "2021-12-18T07:30:13.950774575Z")
)
// parse the timestamp captured on button click and subtract an hour
val filterByOdt = OffsetDateTime.parse(timestamp).minusHours(1)
// filter the list using the OffsetDateTime
val filteredObjects = someObjects.filter {
OffsetDateTime.parse(it.timestamp)
.isBefore(filterByOdt)
}
// print the ids of the results
println(filteredObjects.joinToString(", ") { "${it.id}" })
}
我在示例中使用了以下虛擬類。
data class SomeObject(val id: Long, val timestamp: String)
根據需要,過濾后的串列只包含 5SomeObject秒之前的時間戳timestamp:
0, 1, 2, 3, 4
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/390161.html
上一篇:在c中隨機生成一個生日日期
下一篇:如何計算日期范圍是否在本周內
