Skip to content

Commit 8456a2a

Browse files
iabdalkaderdpgeorge
authored andcommitted
time: Add time module to provide strftime.
1 parent d717b04 commit 8456a2a

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed

python-stdlib/time/manifest.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
metadata(version="0.1")
2+
3+
module("time.py")

python-stdlib/time/time.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
from utime import *
2+
from micropython import const
3+
4+
_TS_YEAR = const(0)
5+
_TS_MON = const(1)
6+
_TS_MDAY = const(2)
7+
_TS_HOUR = const(3)
8+
_TS_MIN = const(4)
9+
_TS_SEC = const(5)
10+
_TS_WDAY = const(6)
11+
_TS_YDAY = const(7)
12+
_TS_ISDST = const(8)
13+
14+
_WDAY = const(("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"))
15+
_MDAY = const(
16+
(
17+
"January",
18+
"February",
19+
"March",
20+
"April",
21+
"May",
22+
"June",
23+
"July",
24+
"August",
25+
"September",
26+
"October",
27+
"November",
28+
"December",
29+
)
30+
)
31+
32+
33+
def strftime(datefmt, ts):
34+
from io import StringIO
35+
36+
fmtsp = False
37+
ftime = StringIO()
38+
for k in datefmt:
39+
if fmtsp:
40+
if k == "a":
41+
ftime.write(_WDAY[ts[_TS_WDAY]][0:3])
42+
elif k == "A":
43+
ftime.write(_WDAY[ts[_TS_WDAY]])
44+
elif k == "b":
45+
ftime.write(_MDAY[ts[_TS_MON] - 1][0:3])
46+
elif k == "B":
47+
ftime.write(_MDAY[ts[_TS_MON] - 1])
48+
elif k == "d":
49+
ftime.write("%02d" % ts[_TS_MDAY])
50+
elif k == "H":
51+
ftime.write("%02d" % ts[_TS_HOUR])
52+
elif k == "I":
53+
ftime.write("%02d" % (ts[_TS_HOUR] % 12))
54+
elif k == "j":
55+
ftime.write("%03d" % ts[_TS_YDAY])
56+
elif k == "m":
57+
ftime.write("%02d" % ts[_TS_MON])
58+
elif k == "M":
59+
ftime.write("%02d" % ts[_TS_MIN])
60+
elif k == "P":
61+
ftime.write("AM" if ts[_TS_HOUR] < 12 else "PM")
62+
elif k == "S":
63+
ftime.write("%02d" % ts[_TS_SEC])
64+
elif k == "w":
65+
ftime.write(str(ts[_TS_WDAY]))
66+
elif k == "y":
67+
ftime.write("%02d" % (ts[_TS_YEAR] % 100))
68+
elif k == "Y":
69+
ftime.write(str(ts[_TS_YEAR]))
70+
else:
71+
ftime.write(k)
72+
fmtsp = False
73+
elif k == "%":
74+
fmtsp = True
75+
else:
76+
ftime.write(k)
77+
val = ftime.getvalue()
78+
ftime.close()
79+
return val

0 commit comments

Comments
 (0)