Skip to content

Commit 0f4c5f1

Browse files
committed
add script for getting time until a datetime
1 parent 8116336 commit 0f4c5f1

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ github3.py
22
tweepy
33
pyusb
44
pulsectl
5+
python-dateutil

scripts/time-until.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env /home/andreas/code/dotfiles/.venv/bin/python
2+
3+
import argparse
4+
import datetime
5+
import dateutil.parser
6+
7+
8+
def parse_dt(val):
9+
return dateutil.parser.parse(val)
10+
11+
12+
def get_time_until(dt, unit=None):
13+
now = datetime.datetime.now(dt.tzinfo)
14+
delta = dt - now
15+
if unit is not None:
16+
unit = unit.strip().lower()
17+
if unit[0] == "d":
18+
return f"{delta.days} days"
19+
elif unit[0] == "h":
20+
delta = str(int((delta.days * 24) + (delta.seconds / 3600))) + " hours"
21+
elif unit in ("mins", "minutes"):
22+
delta = str(int((delta.days * 24) + (delta.seconds / 60))) + " minutes"
23+
return delta
24+
25+
26+
def main():
27+
parser = argparse.ArgumentParser()
28+
parser.add_argument("-u", "--unit")
29+
parser.add_argument("-t", "--template", default="Time until {time}: {remaining}")
30+
parser.add_argument("datetime", type=parse_dt)
31+
args = parser.parse_args()
32+
print(
33+
args.template.format(
34+
time=args.datetime,
35+
remaining=get_time_until(args.datetime, unit=args.unit),
36+
)
37+
)
38+
39+
40+
if __name__ == "__main__":
41+
main()

0 commit comments

Comments
 (0)