思源笔记数据库模板:优化日期计算代码
创作时间:
作者:
@小白创作中心
思源笔记数据库模板:优化日期计算代码
引用
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得到天数差。
通过这样的优化,我们不仅满足了用户的需求,避免了显式的小时计算,还使代码的逻辑更加清晰和直观。
热门推荐
文不厌改|提升学术论文质量的六大修订策略
大众探岳蓝牙使用指南:从连接到语音控制的详细步骤
学术会议海报制作指南:从目标设定到关键信息呈现
人参的健康益处、功效与使用指南
肺部淋巴瘤早期症状是什么
淋巴瘤检验项目有哪些
煤气灶不打火?5种实用解决方案帮你轻松应对
蒸蛋器时间黄金法则,蛋量大小控嫩度,科学蒸制锁美味
央视连曝直播带货乱象,保健品虚假宣传、质检造假引监管风暴?
面包上的椰蓉是什么做的
从杭州到海南自驾游全攻略:更优路线、必备物品和注意事项详解
海南深度游景点:自驾游与必看景点全攻略
小狗翻肠子用什么药?如何正确选择治疗方案?
揭秘小狗翻肠子,症状、原因与护理全指南
新研究发现,超声波技术可以杀死蚊子幼虫!
慢性胰腺炎怎么治疗才彻底
4岁学少儿编程早不早
Vue.js接收和处理JSON数据的完整指南
国足这回可不是装装样子!
三只北极熊中俄工艺品集锦
今日花朝节丨一个容易被遗忘的传统节日,却是一年中最美的日子
Rh血型阳性,这个标签背后隐藏着什么秘密
如何通过冥想提升自我意识和减压
禅宗七律:学习禅修的规律与智慧
音箱接线攻略:四根线柱连接,打造身临其境的听觉盛宴
肝风内动的常见原因及治疗方法
肝风的症状是什么
胆道外引流管的护理要点详解
胰腺术后引流管的管理
得了甲状腺疾病,如何正确对待自己的饮食结构?