diff --git a/python-stdlib/time/manifest.py b/python-stdlib/time/manifest.py new file mode 100644 index 00000000..052ed4a1 --- /dev/null +++ b/python-stdlib/time/manifest.py @@ -0,0 +1,3 @@ +metadata(version="0.1") + +module("time.py") diff --git a/python-stdlib/time/time.py b/python-stdlib/time/time.py new file mode 100644 index 00000000..68f7d921 --- /dev/null +++ b/python-stdlib/time/time.py @@ -0,0 +1,79 @@ +from utime import * +from micropython import const + +_TS_YEAR = const(0) +_TS_MON = const(1) +_TS_MDAY = const(2) +_TS_HOUR = const(3) +_TS_MIN = const(4) +_TS_SEC = const(5) +_TS_WDAY = const(6) +_TS_YDAY = const(7) +_TS_ISDST = const(8) + +_WDAY = const(("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")) +_MDAY = const( + ( + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + ) +) + + +def strftime(datefmt, ts): + from io import StringIO + + fmtsp = False + ftime = StringIO() + for k in datefmt: + if fmtsp: + if k == "a": + ftime.write(_WDAY[ts[_TS_WDAY]][0:3]) + elif k == "A": + ftime.write(_WDAY[ts[_TS_WDAY]]) + elif k == "b": + ftime.write(_MDAY[ts[_TS_MON] - 1][0:3]) + elif k == "B": + ftime.write(_MDAY[ts[_TS_MON] - 1]) + elif k == "d": + ftime.write("%02d" % ts[_TS_MDAY]) + elif k == "H": + ftime.write("%02d" % ts[_TS_HOUR]) + elif k == "I": + ftime.write("%02d" % (ts[_TS_HOUR] % 12)) + elif k == "j": + ftime.write("%03d" % ts[_TS_YDAY]) + elif k == "m": + ftime.write("%02d" % ts[_TS_MON]) + elif k == "M": + ftime.write("%02d" % ts[_TS_MIN]) + elif k == "P": + ftime.write("AM" if ts[_TS_HOUR] < 12 else "PM") + elif k == "S": + ftime.write("%02d" % ts[_TS_SEC]) + elif k == "w": + ftime.write(str(ts[_TS_WDAY])) + elif k == "y": + ftime.write("%02d" % (ts[_TS_YEAR] % 100)) + elif k == "Y": + ftime.write(str(ts[_TS_YEAR])) + else: + ftime.write(k) + fmtsp = False + elif k == "%": + fmtsp = True + else: + ftime.write(k) + val = ftime.getvalue() + ftime.close() + return val