格式neo4j中的时间间隔
我将localdatetime()作为时间戳存储在post节点中,如果post期限超过24小时,我不想显示post。所以我写了下面的问题格式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
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;