Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
格式neo4j中的时间间隔_Neo4j_Cypher - Fatal编程技术网

格式neo4j中的时间间隔

格式neo4j中的时间间隔,neo4j,cypher,Neo4j,Cypher,我将localdatetime()作为时间戳存储在post节点中,如果post期限超过24小时,我不想显示post。所以我写了下面的问题 MATCH (n:Post) return duration.between(localdatetime() ,n.timestamp+duration({hours:24})) as expiry 我得到了类似这样的回应 P0M1DT-15207.54800000S P0M1DT-4721.134000000S 但我想在客户端(javascript)中以h

我将localdatetime()作为时间戳存储在post节点中,如果post期限超过24小时,我不想显示post。所以我写了下面的问题

MATCH (n:Post) return duration.between(localdatetime() ,n.timestamp+duration({hours:24})) as expiry
我得到了类似这样的回应

P0M1DT-15207.54800000S

P0M1DT-4721.134000000S


但我想在客户端(javascript)中以hh:mm:ss格式显示剩余时间。那么如何将这种时态格式格式化为特定格式呢?

从3.4.4开始,Duration和datetime功能仍在开发中,并且缺少简单的格式化选项。您可以通过以下方式拼凑出所需:

如果您需要更一致的格式设置选项,包括将每个单独字段填充为2位的功能,则需要APOC程序,尤其是:

对于到期时默认为00:00:00,您可以在获得从那时到现在的持续时间之前,使用关于截止日期值的案例陈述:

WITH localDateTime() as now
MATCH (n:Post) 
WITH now, n.timestamp + duration({hours:24}) as deadline
WITH now, CASE WHEN now > deadline THEN now ELSE deadline END as deadline
WITH duration.inSeconds(now, deadline) as expiry
RETURN apoc.text.format('%02d:%02d:%02d', [expiry.hours, expiry.minutesOfHour, expiry.secondsOfMinute]) as expiry

要获取2个日期时间(
a
b
)之间的整数天数,请使用以下命令:

duration.inDays(a, b).days
例如(假设
n.timestamp
是一个neo4j DateTime对象):

以及:


这真的很酷,但是过期时间显示负的分和秒,就像这样-4:-57:-25您想在持续时间完全过期时显示00:00:00吗?进行了更改,在截止时间过后应返回00:00:00。
WITH localDateTime() as now
MATCH (n:Post) 
WITH now, n.timestamp + duration({hours:24}) as deadline
WITH now, CASE WHEN now > deadline THEN now ELSE deadline END as deadline
WITH duration.inSeconds(now, deadline) as expiry
RETURN apoc.text.format('%02d:%02d:%02d', [expiry.hours, expiry.minutesOfHour, expiry.secondsOfMinute]) as expiry
duration.inDays(a, b).days
MATCH (n:Post)
RETURN duration.inDays(localdatetime(), n.timestamp).days as nWholeDays;
MATCH (n:Post)
RETURN duration.inDays(localdatetime(), n.timestamp).days > 0 AS atLeast24HoursOld;