calcdate is a utility to make some basic operation on date. It's useful when need to calculate a range of date in order to make database request.
Usage of calcdate:
-b string
Begin date (default "// ::")
-e string
End date
-i duration
Interval (Ex: 1m or 1h or 15s)
-ifmt string
Input Format (%YYYY/%MM/%DD %hh:%mm:%ss) (default "%YYYY/%MM/%DD %hh:%mm:%ss")
-ofmt string
Input Format (%YYYY/%MM/%DD %hh:%mm:%ss), use @ts for timestamp (default "%YYYY/%MM/%DD %hh:%mm:%ss")
-s string
Separator (default " ")
-tmpl string
Used only with -i option (default "{{ .BeginTime.Format \"%YYYY/%MM/%DD %hh:%mm:%ss\" }} - {{ .EndTime.Format \"%YYYY/%MM/%DD %hh:%mm:%ss\" }} {{ .BeginTime.Unix }} {{ .EndTime.Unix }}")
-tz string
Timezone (default "Local")
-v Get version
Be careful, there is a breaking change after the version 0.5 (format is using % symbol).
By default this is the current datetime that is printed.
$ ./calcdate
2020/09/14 23:15:10
$ ./calcdate -b //-1
2020/09/13 23:16:37
$ date && ./calcdate -b :-1: -e :-1:
lun. 14 sept. 2020 23:18:15 CEST
2020/09/14 23:17:00 2020/09/14 23:17:59
$ date && ./calcdate -b :-1:
lun. 14 sept. 2020 23:18:22 CEST
2020/09/14 23:17:22
$ date && ./calcdate -b :-1: -tz UTC
lun. 14 sept. 2020 23:19:08 CEST
2020/09/14 21:18:08
$ calcdate -b ":-5:" -e "::" -s "' and '"
2022/01/10 21:29:00' and '2022/12/31 23:59:59
date;calcdate -b ":-5:" -e "::59" -s "' and '"
lun. 10 janv. 2022 21:41:55 CET
2022/01/10 21:36:00' and '2022/01/10 21:41:59
In the below example, there is also a call to MinusOneSecond.
$ calcdate -b "2022/01/07 20:50:00" -e "2022/01/08 00:30:00" -i 5m -tmpl "{{ .BeginTime.Format \"%YYYY/%MM/%DD %hh:%mm:%ss\" }} - {{ .EndTime.Format \"%YYYY/%MM/%DD %hh:%mm:%ss\" }} {{ .BeginTime.Unix }} {{ .EndTime.Unix }} --- {{ (MinusOneSecond .EndTime).Format \" %hh:%mm:%ss \" }}"
2022/01/07 20:50:00 - 2022/01/07 20:55:00 1641585000 1641585300 --- 20:54:59
2022/01/07 20:55:00 - 2022/01/07 21:00:00 1641585300 1641585600 --- 20:59:59
2022/01/07 21:00:00 - 2022/01/07 21:05:00 1641585600 1641585900 --- 21:04:59
2022/01/07 21:05:00 - 2022/01/07 21:10:00 1641585900 1641586200 --- 21:09:59
2022/01/07 21:10:00 - 2022/01/07 21:15:00 1641586200 1641586500 --- 21:14:59
2022/01/07 21:15:00 - 2022/01/07 21:20:00 1641586500 1641586800 --- 21:19:59
2022/01/07 21:20:00 - 2022/01/07 21:25:00 1641586800 1641587100 --- 21:24:59
2022/01/07 21:25:00 - 2022/01/07 21:30:00 1641587100 1641587400 --- 21:29:59
2022/01/07 21:30:00 - 2022/01/07 21:35:00 1641587400 1641587700 --- 21:34:59
2022/01/07 21:35:00 - 2022/01/07 21:40:00 1641587700 1641588000 --- 21:39:59
2022/01/07 21:40:00 - 2022/01/07 21:45:00 1641588000 1641588300 --- 21:44:59
2022/01/07 21:45:00 - 2022/01/07 21:50:00 1641588300 1641588600 --- 21:49:59
2022/01/07 21:50:00 - 2022/01/07 21:55:00 1641588600 1641588900 --- 21:54:59
2022/01/07 21:55:00 - 2022/01/07 22:00:00 1641588900 1641589200 --- 21:59:59
2022/01/07 22:00:00 - 2022/01/07 22:05:00 1641589200 1641589500 --- 22:04:59
2022/01/07 22:05:00 - 2022/01/07 22:10:00 1641589500 1641589800 --- 22:09:59
2022/01/07 22:10:00 - 2022/01/07 22:15:00 1641589800 1641590100 --- 22:14:59
2022/01/07 22:15:00 - 2022/01/07 22:20:00 1641590100 1641590400 --- 22:19:59
2022/01/07 22:20:00 - 2022/01/07 22:25:00 1641590400 1641590700 --- 22:24:59
2022/01/07 22:25:00 - 2022/01/07 22:30:00 1641590700 1641591000 --- 22:29:59
2022/01/07 22:30:00 - 2022/01/07 22:35:00 1641591000 1641591300 --- 22:34:59
2022/01/07 22:35:00 - 2022/01/07 22:40:00 1641591300 1641591600 --- 22:39:59
2022/01/07 22:40:00 - 2022/01/07 22:45:00 1641591600 1641591900 --- 22:44:59
2022/01/07 22:45:00 - 2022/01/07 22:50:00 1641591900 1641592200 --- 22:49:59
2022/01/07 22:50:00 - 2022/01/07 22:55:00 1641592200 1641592500 --- 22:54:59
2022/01/07 22:55:00 - 2022/01/07 23:00:00 1641592500 1641592800 --- 22:59:59
2022/01/07 23:00:00 - 2022/01/07 23:05:00 1641592800 1641593100 --- 23:04:59
2022/01/07 23:05:00 - 2022/01/07 23:10:00 1641593100 1641593400 --- 23:09:59
2022/01/07 23:10:00 - 2022/01/07 23:15:00 1641593400 1641593700 --- 23:14:59
2022/01/07 23:15:00 - 2022/01/07 23:20:00 1641593700 1641594000 --- 23:19:59
2022/01/07 23:20:00 - 2022/01/07 23:25:00 1641594000 1641594300 --- 23:24:59
2022/01/07 23:25:00 - 2022/01/07 23:30:00 1641594300 1641594600 --- 23:29:59
2022/01/07 23:30:00 - 2022/01/07 23:35:00 1641594600 1641594900 --- 23:34:59
2022/01/07 23:35:00 - 2022/01/07 23:40:00 1641594900 1641595200 --- 23:39:59
2022/01/07 23:40:00 - 2022/01/07 23:45:00 1641595200 1641595500 --- 23:44:59
2022/01/07 23:45:00 - 2022/01/07 23:50:00 1641595500 1641595800 --- 23:49:59
2022/01/07 23:50:00 - 2022/01/07 23:55:00 1641595800 1641596100 --- 23:54:59
2022/01/07 23:55:00 - 2022/01/08 00:00:00 1641596100 1641596400 --- 23:59:59
2022/01/08 00:00:00 - 2022/01/08 00:05:00 1641596400 1641596700 --- 00:04:59
2022/01/08 00:05:00 - 2022/01/08 00:10:00 1641596700 1641597000 --- 00:09:59
2022/01/08 00:10:00 - 2022/01/08 00:15:00 1641597000 1641597300 --- 00:14:59
2022/01/08 00:15:00 - 2022/01/08 00:20:00 1641597300 1641597600 --- 00:19:59
2022/01/08 00:20:00 - 2022/01/08 00:25:00 1641597600 1641597900 --- 00:24:59
2022/01/08 00:25:00 - 2022/01/08 00:30:00 1641597900 1641598200 --- 00:29:59