gpt4 book ai didi

neo4j - 在 neo4j 中格式化时间持续时间

转载 作者:行者123 更新时间:2023-12-02 09:11:26 25 4
gpt4 key购买 nike

我将 localdatetime() 作为时间戳存储在帖子节点中,如果帖子年龄超过 24 小时,我不想显示该帖子。所以我写了下面的查询

MATCH (n:Post) return duration.between(localdatetime() ,n.timestamp+duration({hours:24})) as expiry

我收到类似这样的回复。

P0M1DT-15207.548000000S

P0M1DT-4721.134000000S

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

最佳答案

自 3.4.4 起,持续时间和日期时间功能仍在开发中,并且缺少简单的格式化选项。您可以通过 accessing the components of the durations 拼凑出您需要的内容:

MATCH (n:Post) 
WITH duration.inSeconds(localdatetime() ,n.timestamp+duration({hours:24})) as expiry
RETURN expiry.hours, + ':' + expiry.minutesOfHour + ':' + expiry.secondsOfMinute as expiry

如果您需要更一致的格式选项,包括将每个单独字段填充为 2 位数字的能力,您将需要 APOC 程序,特别是 apoc.text.format() :

MATCH (n:Post) 
WITH duration.inSeconds(localdatetime() ,n.timestamp+duration({hours:24})) as expiry
RETURN apoc.text.format('%02d:%02d:%02d', [expiry.hours, expiry.minutesOfHour, expiry.secondsOfMinute]) as expiry

至于过期时默认为 00:00:00,您可以在获取从那时到现在之间的持续时间之前对截止日期的值使用 CASE 语句:

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

关于neo4j - 在 neo4j 中格式化时间持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51527656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com