如何从JavaScript应用程序将Instant传递给spring-data-rest API

时间:2018-11-21 22:50:23

标签: java spring spring-data-rest

我有一个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应用传递日期?

1 个答案:

答案 0 :(得分:0)

通常,时间戳是存储/传输/等。通过以下两种方式之一:

UNIX timestamps

这只是一个数字,表示从过去的固定时间开始的秒数(称为 UNIX时期)。

Java有Instant#getEpochSecond()方法来获取此值,还有Instant.ofEpochSecond()静态方法来根据时间戳创建list1 = ['1','2','3','4'] s = ",".join(list1) print(s) 对象。

JavaScript具有Date类型,可以从时间戳(Instant)实例化,然后转换为时间戳with difficulty

ISO 8601 strings

这只是具有标准化格式的常规ASCII文本,例如:

new Date(timestamp * 1000)

通过这种方法,您可以获得时区支持的优势。

Java使用Instant#toString()来获取ISO 8601字符串,而这种稍微冗长的方法可以转换回来:

2018-11-21T22:25:58+00:00

Javascript不支持时区,但仍可以使用Date#toISOString()生成符合ISO的字符串,并使用静态Date.parse()解析回它。

无论采用哪种方式,如果这对您很重要,您可能希望在javascript端使用其他库来更好地控制时间戳。