summaryrefslogtreecommitdiff
path: root/lib/timeutils
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2018-08-26 22:22:45 -0700
committerGitHub <noreply@github.com>2018-08-26 22:22:45 -0700
commit569a050e82fc40c7d56caa6ca76eed94fa244bc8 (patch)
tree6a607711727074bbc5b90a25fab8df4db2df9210 /lib/timeutils
parent9a10849afdab9e610dfeab58cb03292bac9ca997 (diff)
parentb61cf8d81f6f5c59175de9e7508752b0f27d7fcd (diff)
Merge pull request #1143 from notro/stat_epoch_fix
Fix os.stat() epoch and use RTC for file timestamp
Diffstat (limited to 'lib/timeutils')
-rw-r--r--lib/timeutils/timeutils.c13
-rw-r--r--lib/timeutils/timeutils.h7
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/timeutils/timeutils.c b/lib/timeutils/timeutils.c
index eb3dc80d4..b93a85dee 100644
--- a/lib/timeutils/timeutils.c
+++ b/lib/timeutils/timeutils.c
@@ -158,6 +158,17 @@ mp_uint_t timeutils_seconds_since_2000(mp_uint_t year, mp_uint_t month,
+ (year - 2000) * 31536000;
}
+void timeutils_seconds_since_epoch_to_struct_time(mp_uint_t t, timeutils_struct_time_t *tm) {
+ t -= EPOCH1970_EPOCH2000_DIFF_SECS;
+ timeutils_seconds_since_2000_to_struct_time(t, tm);
+}
+
+mp_uint_t timeutils_seconds_since_epoch(mp_uint_t year, mp_uint_t month, mp_uint_t date,
+ mp_uint_t hour, mp_uint_t minute, mp_uint_t second) {
+ mp_uint_t t = timeutils_seconds_since_2000(year, month, date, hour, minute, second);
+ return t + EPOCH1970_EPOCH2000_DIFF_SECS;
+}
+
mp_uint_t timeutils_mktime(mp_uint_t year, mp_int_t month, mp_int_t mday,
mp_int_t hours, mp_int_t minutes, mp_int_t seconds) {
@@ -211,5 +222,5 @@ mp_uint_t timeutils_mktime(mp_uint_t year, mp_int_t month, mp_int_t mday,
year++;
}
}
- return timeutils_seconds_since_2000(year, month, mday, hours, minutes, seconds);
+ return timeutils_seconds_since_epoch(year, month, mday, hours, minutes, seconds);
}
diff --git a/lib/timeutils/timeutils.h b/lib/timeutils/timeutils.h
index 9b1abeb8f..0ca6bb167 100644
--- a/lib/timeutils/timeutils.h
+++ b/lib/timeutils/timeutils.h
@@ -27,6 +27,8 @@
#ifndef MICROPY_INCLUDED_LIB_TIMEUTILS_TIMEUTILS_H
#define MICROPY_INCLUDED_LIB_TIMEUTILS_TIMEUTILS_H
+#define EPOCH1970_EPOCH2000_DIFF_SECS 946684800
+
typedef struct _timeutils_struct_time_t {
uint16_t tm_year; // i.e. 2014
uint8_t tm_mon; // 1..12
@@ -48,6 +50,11 @@ void timeutils_seconds_since_2000_to_struct_time(mp_uint_t t,
mp_uint_t timeutils_seconds_since_2000(mp_uint_t year, mp_uint_t month,
mp_uint_t date, mp_uint_t hour, mp_uint_t minute, mp_uint_t second);
+void timeutils_seconds_since_epoch_to_struct_time(mp_uint_t t, timeutils_struct_time_t *tm);
+
+mp_uint_t timeutils_seconds_since_epoch(mp_uint_t year, mp_uint_t month, mp_uint_t date,
+ mp_uint_t hour, mp_uint_t minute, mp_uint_t second);
+
mp_uint_t timeutils_mktime(mp_uint_t year, mp_int_t month, mp_int_t mday,
mp_int_t hours, mp_int_t minutes, mp_int_t seconds);