[英]How to pass an Instant from a javascript app to a spring-data-rest API
我有一個spring-data-rest API,我創建了一個查詢,如下所示:
@Query("SELECT at FROM Transaction at WHERE at.transactionDate BETWEEN :start AND :end")
Page<AssetsTransaction> findAllByDates(
@Param("start") Instant start,
@Param("end") Instant end,
Pageable pageable);
其中Transaction.transactionDate是即時類型。 我應該如何通過javascript應用傳遞日期?
通常,時間戳是存儲/傳輸/等。 通過以下兩種方式之一:
這只是一個數字,表示從過去的固定時間起的秒數(稱為UNIX epoch )。
Java具有Instant#getEpochSecond()
方法來獲取此值,以及Instant.ofEpochSecond()
靜態方法來根據時間戳創建Instant
對象。
Javascript具有Date
類型,該類型可以從時間戳( new Date(timestamp * 1000)
)實例化,並很難轉換為時間戳。
這只是具有標准化格式的常規ASCII文本,例如:
2018-11-21T22:25:58+00:00
您可以使用此方法獲得時區支持的優勢。
Java使用Instant#toString()
來獲取ISO 8601字符串,此稍微冗長的方法可以轉換回來:
Instant.from(DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(string));
Javascript不支持時區,但仍可以使用Date#toISOString()
生成符合ISO的字符串,並使用靜態Date.parse()
將其解析回去。
無論您采用哪種方式,如果這對您來說很重要,您都可能希望在javascript端使用其他庫來更好地控制時間戳。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.