思源笔记数据库模板:优化日期计算代码
创作时间:
作者:
@小白创作中心
思源笔记数据库模板:优化日期计算代码
引用
CSDN
等
7
来源
1.
https://m.blog.csdn.net/lizhengwei26/article/details/81120083
2.
https://www.jianshu.com/p/d9da9d1bdd08
3.
https://docs.gomplate.ca/functions/time/
4.
https://discuss.logseq.com/t/i-want-help-custom-templates-for-logseq/28526
5.
https://discuss.logseq.com/t/good-way-of-documenting-in-logseq/28034
6.
https://www.logseqmastery.com/blog/logseq-templates
7.
https://m.seaxiang.com/blog/kWjnvH
在使用思源笔记的数据库模板时,用户希望优化日期计算的代码,避免使用小时计算,直接用天数计算。然而,由于Go语言模板的限制,直接计算天数差并不像想象中那么简单。
01
为什么需要使用秒数截断?
在Go语言中,时间差是通过time.Duration类型来表示的,它以纳秒为单位。当我们需要计算两个时间点之间的天数差时,实际上是在处理纳秒级别的计算。然而,Go模板并不支持直接对纳秒进行操作,因此我们需要将纳秒转换为更易处理的单位,比如秒。
使用86400秒(即24小时)作为截断单位,实际上是在将时间戳对齐到当天的0点,从而实现日期的截断。这种做法虽然在表面上看起来是在处理小时,但实际上是在为天数计算做准备。
02
如何实现更直观的天数计算?
尽管Go模板不支持直接计算天数差,我们仍然可以通过一些技巧来实现更直观的计算。关键在于如何将日期截断到天,然后计算天数差。
在之前的代码中,我们使用了以下方法:
.action{$delta_days := div ($deadlineMidnight.Sub $nowMidnight).Hours 24}
这段代码实际上是在计算天数差,但使用了小时作为中间单位,这可能让用户感到困惑。为了使代码更直观,我们可以直接使用秒数进行计算:
.action{$delta_days := div ($deadlineMidnight.Sub $nowMidnight) 86400}
但需要注意的是,Go模板可能不支持直接对time.Duration进行除法运算。因此,我们需要先将time.Duration转换为秒数,然后再进行除法运算:
.action{$delta_days := div (div ($deadlineMidnight.Sub $nowMidnight).Seconds 86400) 1}
虽然这样的代码可能看起来更复杂,但它明确地展示了我们是在计算天数差,而不是小时差。
03
完整代码示例
以下是优化后的完整代码示例:
{{$now := time.Now}}
{{$deadline := time.Parse "2006-01-02" .date}}
{{$nowMidnight := $now.Truncate 86400}}
{{$deadlineMidnight := $deadline.Truncate 86400}}
{{$delta := $deadlineMidnight.Sub $nowMidnight}}
{{$delta_days := div (div $delta.Seconds 86400) 1}}
<p>当前时间:{{$now.Format "2006-01-02 15:04:05"}}</p>
<p>截止日期:{{$deadline.Format "2006-01-02"}}</p>
<p>距离截止日期还有:{{$delta_days}}天</p>
这段代码首先获取当前时间和截止日期,然后将两者都截断到当天的0点。接着计算两个时间点之间的差值,并将其转换为秒数。最后,将秒数除以86400得到天数差。
通过这样的优化,我们不仅满足了用户的需求,避免了显式的小时计算,还使代码的逻辑更加清晰和直观。
热门推荐
“中国量子技术赶上来了”,《经济学人》“勉强”承认:中国量子发展模式“也许”更好
植物的光合磷酸化
违停怎么投诉
战争与地理的关系和奥秘
证人不出庭可以申请法院调取吗
违约金和赔偿金有什么区别
2025年家装厨卫“焕新”政策发布 装修房子可享补贴 怎么补?补多少?
标志性设计和持久传奇之旅:大众甲壳虫的永恒魅力
区块链知识分享:比特币是怎么发行的
浙江工商大学苏为华教授、陈骥教授团队研究成果获浙江省科学技术进步奖
护照与签证的差异
孩子成长中的情绪识别与表达:教会孩子认识并表达情绪
隆回龙牙百合:地理标志保护产品的独特魅力
家庭装修墙面面积该怎么计算
湿气重会出汗吗
收养上万只流浪猫犯法吗?法律解读与社会影响
用 2 大 OKR 范例轻松落实目标!个人、团队皆适用
中国十大百合产地:从兰州到江油,品味百合的地域魅力
什么情况下可以缓交诉讼费
对付恶性肿瘤 中西医“并肩打好健康保卫战”
如何创建比特币私钥,比特币的私钥怎么生成的
记者跟随“外卖小哥”送外卖:一声“谢谢” 再累也值
紧密结合“四个面向”,通络系统干预心血管事件链获重要进展
生理期可以吃芒果吗?营养师的专业建议来了
咖啡豆烘焙后放多久才可以喝?养豆的最佳时间是几天
拔血罐的作用及危害
系统引导文件损坏蓝屏报错:0xc0000001
李白诗歌中“酒”的意蕴解读
哪吒导演饺子的成功,说明了天才来自有兴趣或不务正业的孩子
在家“啃老”的年轻人,心态崩了