簡體   English   中英

如何從JavaScript應用程序將Instant傳遞給spring-data-rest API

[英]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時間戳

這只是一個數字,表示從過去的固定時間起的秒數(稱為UNIX epoch )。

Java具有Instant#getEpochSecond()方法來獲取此值,以及Instant.ofEpochSecond()靜態方法來根據時間戳創建Instant對象。

Javascript具有Date類型,該類型可以從時間戳( new Date(timestamp * 1000) )實例化,並很難轉換為時間戳。

ISO 8601字符串

這只是具有標准化格式的常規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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM