思源笔记数据库模板:优化日期计算代码
创作时间:
作者:
@小白创作中心
思源笔记数据库模板:优化日期计算代码
引用
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得到天数差。
通过这样的优化,我们不仅满足了用户的需求,避免了显式的小时计算,还使代码的逻辑更加清晰和直观。
热门推荐
如何删除马赛克:实用技巧与工具推荐
Sample HTML
家装电线尺寸标准 家装电线规格是多少
广海南三岛旅游景点:探寻自然奇观与人文遗迹之旅
“91”这个数字背后的含义究竟是什么?
中医治疗5种失眠类型:入睡难、做梦多、易惊醒、定时醒、彻夜醒
宅基地拆迁补偿只认户主?(今日土地征收拆迁补偿更新)
素食饮食的健康益处与营养注意事项
动漫插画中的衣服服装设计技巧
维生素B能够保护肝脏和胃部吗
罗建云:跨越千年 北宋皇陵留给我们永久的谜
风险管理在企业管理中的应用与策略分析
蔡徐坤:音乐界的才子,时尚界的伯乐,当代的“阿波罗”
过期化妆品销毁是怎么处理的
宇宙背景辐射:揭开宇宙诞生的微波密码
科技驱动、创新表达 中国故事“潮”向世界
为什么大部分国家都没有实行安乐死?
个人出交通事故怎么赔偿
巧用Excel,轻松打造拼音田字格模板
寒食夜:夜色中的历史与文化印记
点赞!中坦联合演兵场上的"翻译官"
智慧农业种植:科技创新农田作物产量的新途径
鸡骨草功效与禁忌:从煲汤到凉茶的全面指南
佛教中“中道”的含义
C++引用与指针深度解析:能否互相替代?
三个传教士和三个妖怪过河问题的完整解析与求解
乐平市发展林下中药材种植 带动农户增收创收
丹佛之旅:探寻西部文化与自然奇观
1岁娃因吃罐头“铅中毒”离世!6大铅源头,就藏在你身边!
推进供需精准对接提升市场效率