@@ -154,6 +154,16 @@ STATIC mp_obj_t mod_time_sleep_us(mp_obj_t arg) {
154154}
155155STATIC MP_DEFINE_CONST_FUN_OBJ_1 (mod_time_sleep_us_obj , mod_time_sleep_us );
156156
157+ STATIC mp_obj_t mod_time_strftime (mp_uint_t n_args , const mp_obj_t * args ) {
158+ assert (n_args == 1 );
159+ time_t t = time (NULL );
160+ struct tm * tm = localtime (& t );
161+ char buf [32 ];
162+ size_t sz = strftime (buf , sizeof (buf ), mp_obj_str_get_str (args [0 ]), tm );
163+ return mp_obj_new_str (buf , sz , false);
164+ }
165+ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (mod_time_strftime_obj , 1 , 2 , mod_time_strftime );
166+
157167STATIC const mp_rom_map_elem_t mp_module_time_globals_table [] = {
158168 { MP_ROM_QSTR (MP_QSTR___name__ ), MP_ROM_QSTR (MP_QSTR_utime ) },
159169 { MP_ROM_QSTR (MP_QSTR_clock ), MP_ROM_PTR (& mod_time_clock_obj ) },
@@ -164,6 +174,7 @@ STATIC const mp_rom_map_elem_t mp_module_time_globals_table[] = {
164174 { MP_ROM_QSTR (MP_QSTR_ticks_ms ), MP_ROM_PTR (& mod_time_ticks_ms_obj ) },
165175 { MP_ROM_QSTR (MP_QSTR_ticks_us ), MP_ROM_PTR (& mod_time_ticks_us_obj ) },
166176 { MP_ROM_QSTR (MP_QSTR_ticks_diff ), MP_ROM_PTR (& mod_time_ticks_diff_obj ) },
177+ { MP_ROM_QSTR (MP_QSTR_strftime ), MP_ROM_PTR (& mod_time_strftime_obj ) },
167178};
168179
169180STATIC MP_DEFINE_CONST_DICT (mp_module_time_globals , mp_module_time_globals_table );
0 commit comments