diff --git a/application/rt-thread/t3e-pro/components/FontEnum.c b/application/rt-thread/t3e-pro/components/FontEnum.c index 57dccad5..911d7e78 100644 --- a/application/rt-thread/t3e-pro/components/FontEnum.c +++ b/application/rt-thread/t3e-pro/components/FontEnum.c @@ -1,5 +1,66 @@ #include "fontenum.h" +//时区表 +const int Menu_timearea_array[75][2]=//31 +{ + {-12,0}, //0 + {-11,0}, //1 + {-10,0}, //2 + {-9,1800},//3 + {-9,0}, //4 + {-8,0}, //5 + {-7,0}, //6 + {-6,0}, //7 + {-5,0}, //8 + {-4,1800},//9 + {-4,0}, //10 + {-3,1800},//11 + {-3,0}, //12 + {-2,1800},//13 + {-2,0}, //14 + {-1,0}, //15 + + //n+3的规律 + { 0,0}, //16 + { 0,1800},//17 + { 0,2700},//18 + { 1,0}, //19 + { 1,1800},//20 + { 1,2700},//21 + { 2,0}, //22 + { 2,1800},//23 + { 2,2700},//24 + { 3,0}, //25 + { 3,1800},//26//伊朗:UTC+3:30(东3.5区) + { 3,2700},//27 + { 4,0}, //28 + { 4,1800},//29//阿富汗:UTC+4:30(东4.5区) + { 4,2700},//30 + { 5,0}, //31 + { 5,1800},//32//印度 斯里兰卡:UTC+5:30(东5.5区) + { 5,2700},//33//尼泊尔:UTC+5:45(东5.75区) + { 6,0}, //34 + { 6,1800},//35//缅甸:UTC+6:30(东6.5区) + { 6,2700},//36 + { 7,0}, //37 + { 7,1800},//38 + { 7,2700},//39 + { 8,0}, //40 + { 8,1800},//41 + { 8,2700},//42 + { 9,0}, //43 + { 9,1800},//44 + { 9,2700},//45 + {10,0}, //46 + {10,1800},//47 + {10,2700},//48 + {11,0}, //49 + {11,1800},//50 + {11,2700},//51 + {12,0}, //52 + {12,1800},//53 + {12,2700},//54 +}; const char *btns_chs[LANG_MAX][3]= { diff --git a/application/rt-thread/t3e-pro/components/FontEnum.h b/application/rt-thread/t3e-pro/components/FontEnum.h index 70921443..0202777f 100644 --- a/application/rt-thread/t3e-pro/components/FontEnum.h +++ b/application/rt-thread/t3e-pro/components/FontEnum.h @@ -246,7 +246,7 @@ extern const char Menu_List[LANG_MAX][MENU_LIST_MAX][80]; //空调语言内容 extern const char Menu_AirList[LANG_MAX][AIR_MODE_MAX][5][16]; - + extern const int Menu_timearea_array[75][2]; #endif diff --git a/application/rt-thread/t3e-pro/components/custom/custom.c b/application/rt-thread/t3e-pro/components/custom/custom.c index 08e1235a..019a5367 100644 --- a/application/rt-thread/t3e-pro/components/custom/custom.c +++ b/application/rt-thread/t3e-pro/components/custom/custom.c @@ -39,6 +39,7 @@ // #include "cJSON.h" #include #include "ESP32_Clock.h" +#include "fontenum.h" extern rt_mutex_t xGuiSemaphore; @@ -6300,41 +6301,44 @@ void custom_datetime_key_status(char key,lv_event_code_t code) else { //时区 - sel_opt_idt=lv_dropdown_get_selected(guider_ui.datesetpage_zoneddlist);//0~24 + sel_opt_idt=lv_dropdown_get_selected(guider_ui.datesetpage_zoneddlist);//0开始的 lv_dropdown_get_selected_str(guider_ui.datesetpage_zoneddlist,str,sizeof(str)); - LOG_I_LINE("zone:%s---%d",str,sel_opt_idt-12); - tz_set(sel_opt_idt-12); + LOG_I_LINE("zone:%s---%d",str,sel_opt_idt); + LOG_I_LINE("zone:%d,offset:%d",Menu_timearea_array[sel_opt_idt][0],Menu_timearea_array[sel_opt_idt][1]); + tz_set(Menu_timearea_array[sel_opt_idt][0]); LOG_I_LINE("new read zone:%d",tz_get()); //UTC的起始时间为‌1970年1月1日 00:00:00‌(协调世界时) //标准时间戳通常指的是UTC( 协调世界时 )。时间戳以 1970年1月1日 零时(UTC)为起点 //标准时间戳:格林威治时间,以 1970.01.01 00:00:00 为起点到现在的总秒数。 //本地时间戳:考虑时区和夏令时的本地时间,即标准时间 ± 时差。一般设备以本地时间为准 - - //UTC +时区差*3600秒=本地时间 + //UTC时间 + 时区*3600秒=本地时间 //zone=(Localtime-standardtime)/3600 - //UTC=本地时间-时区差*3600 - //now()显示的是 UTC标准时间 + //UTC=本地时间-时区*3600 + //now()显示的是 本地时间 //设置的时间当本地时间 - - // LOG_I_LINE("dateToEpoch:%d\r\n", dateToEpoch(2025, 7, 8, 18, 20, 0));//当地时间 1970开始计算的 - // LOG_I_LINE("dateToEpoch2:%d\r\n", dateToEpoch(2025, 7, 8, 18, 20, 0)-tz_get()*3600);//utc时间 - time_t Localtime=dateToEpoch(year, month, day, hour, minute, 0);//年月日转换为本地时间(1970开始计算的) - LOG_I_LINE("Localtime:%d\r\n", Localtime); - time_t standardtime=Localtime-tz_get()*3600;//本地时间转换为UTC标准时间戳 + LOG_I_LINE("Localtime:%d\r\n", Localtime);//本地时间 + + //印度utc+5:30为例 + //转为标准utc标准时间正常应该-->当地时间(秒)-非标准时区的偏移时间(分钟)*60(秒)-时区(小时)*3600(秒);如果不处理偏移时间 则utc标准时间多了个偏移时间 + //由于rtt(时区参数是个整数)不支持处理非标准时区,所以将非标准时区的偏移时间传到了utc标准时间去了 + //好处;now()显示出来就是本地时间 非标准时区的偏移时间不用再次处理了 + + //time_t standardtime=Localtime-Menu_timearea_array[sel_opt_idt][1]-tz_get()*3600;//考虑非标准时区 在now()显示本地时间的时候要加上非标准时区的偏移时间 + time_t standardtime=Localtime-tz_get()*3600;//不考虑非标准时区 在now()显示本地时间的时候不需要加上非标准时区的偏移时间 LOG_I_LINE("standardtime:%d\r\n",standardtime); //更新时间 更新的是utc时间 struct timeval tv; tv.tv_sec=(time_t)standardtime;//utc时间 tv.tv_usec=0; - settimeofday(&tv, NULL);//不用重新设置时区 + settimeofday(&tv, NULL);//settimeofday()函数设置的是‌UTC(协调世界时)时间‌,而不是当地时间 - // SET_nvs_Sys_Info_tzzone(zone); - // nvs_eepom_sysInfo_update(); + SET_nvs_Sys_Info_tzzone(sel_opt_idt);//保存时区 + nvs_eepom_sysInfo_update(); //退出 if(!guider_ui.dateinfopage) diff --git a/application/rt-thread/t3e-pro/components/generated/setup_scr_datesetpage.c b/application/rt-thread/t3e-pro/components/generated/setup_scr_datesetpage.c index fc36975f..66605c3c 100644 --- a/application/rt-thread/t3e-pro/components/generated/setup_scr_datesetpage.c +++ b/application/rt-thread/t3e-pro/components/generated/setup_scr_datesetpage.c @@ -111,11 +111,12 @@ void setup_scr_datesetpage(lv_ui *ui) //Write codes datesetpage_zoneddlist ui->datesetpage_zoneddlist = lv_dropdown_create(ui->datesetpage); - lv_dropdown_set_options(ui->datesetpage_zoneddlist, "UTC-12\nUTC-11\nUTC-10\nUTC-09\nUTC-08\nUTC-07\nUTC-06\nUTC-05\nUTC-04\nUTC-03\nUTC-02\nUTC-01\nUTC+00\nUTC+01\nUTC+02\nUTC+03\nUTC+04\nUTC+05\nUTC+06\nUTC+07\nUTC+08\nUTC+09\nUTC+10\nUTC+11\nUTC+12"); + lv_dropdown_set_options(ui->datesetpage_zoneddlist, "UTC-12:00\nUTC-11:00\nUTC-10:00\nUTC-09:30\nUTC-09:00\nUTC-08:00\nUTC-07:00\nUTC-06:00\nUTC-05:00\nUTC-04:30\nUTC-04:00\nUTC-03:30\nUTC-03:00\nUTC-02:30\nUTC-02:00\nUTC-01:00\nUTC+00:00\nUTC+00:30\nUTC+00:45\nUTC+01:00\nUTC+01:30\nUTC+01:45\nUTC+02:00\nUTC+02:30\nUTC+02:45\nUTC+03:00\nUTC+03:30\nUTC+03:45\nUTC+04:00\nUTC+04:30\nUTC+04:45\nUTC+05:00\nUTC+05:30\nUTC+05:45\nUTC+06:00\nUTC+06:30\nUTC+06:45\nUTC+07:00\nUTC+07:30\nUTC+07:45\nUTC+08:00\nUTC+08:30\nUTC+08:45\nUTC+09:00\nUTC+09:30\nUTC+09:45\nUTC+10:00\nUTC+10:30\nUTC+10:45\nUTC+11:00\nUTC+11:30\nUTC+11:45\nUTC+12:00\nUTC+12:30\nUTC+12:45"); lv_obj_set_pos(ui->datesetpage_zoneddlist, 39, 113); lv_obj_set_size(ui->datesetpage_zoneddlist, 403, 35); -//0--UTC-12 ....12---UTC+0...... 关系:+12 - lv_dropdown_set_selected(ui->datesetpage_zoneddlist,tz_get()+12);//-12~+12----->0~24 + + //0--UTC-12 ....12---UTC+0...... UTC++12 + lv_dropdown_set_selected(ui->datesetpage_zoneddlist,GET_nvs_Sys_Info_tzzone()); //Write style for datesetpage_zoneddlist, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT. lv_obj_set_style_text_color(ui->datesetpage_zoneddlist, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT); diff --git a/application/rt-thread/t3e-pro/components/mcu_sdk/src/protocol.c b/application/rt-thread/t3e-pro/components/mcu_sdk/src/protocol.c index 7ede7b59..55b1a77f 100644 --- a/application/rt-thread/t3e-pro/components/mcu_sdk/src/protocol.c +++ b/application/rt-thread/t3e-pro/components/mcu_sdk/src/protocol.c @@ -3389,8 +3389,96 @@ void mcu_write_rtctime(unsigned char time[]) //=0是utc+0 //<0是utc- //>0是utc+ - char zone=(char)((Localtime-standardtime)/3600); - printf("zone:%d\r\n", zone); + char zone=(char)((Localtime-standardtime)/3600);//标准时区 + int zone_offset=((Localtime-standardtime)%3600);//处理5:30 6:30等等非准标时区 + printf("zone:%d;zone_offset:%d\r\n", zone,zone_offset); + + if( (zone<=-13) || (zone>=13) ) + { + return; + } + //限制在-12~12之间 +//判断是不是标准时间 + if(zone==-12) + { + SET_nvs_Sys_Info_tzzone(0); + }else if(zone==-11) + { + SET_nvs_Sys_Info_tzzone(1); + } else if(zone==-10) + { + SET_nvs_Sys_Info_tzzone(2); + } else if(zone==-9) + { + if(zone_offset!=0)//zone_offset=1800 -1800 -9:30 + { + SET_nvs_Sys_Info_tzzone(3); + } + else + { + SET_nvs_Sys_Info_tzzone(4); + } + } else if(zone==-8) + { + SET_nvs_Sys_Info_tzzone(5); + } else if(zone==-7) + { + SET_nvs_Sys_Info_tzzone(6); + } else if(zone==-6) + { + SET_nvs_Sys_Info_tzzone(7); + } else if(zone==-5) + { + SET_nvs_Sys_Info_tzzone(8); + } else if(zone==-4) + { + if(zone_offset!=0)//zone_offset=1800 -1800 -4:30 + { + SET_nvs_Sys_Info_tzzone(9); + } + else + { + SET_nvs_Sys_Info_tzzone(10); + } + } else if(zone==-3) + { + if(zone_offset!=0)//zone_offset=1800 -1800 -3:30 + { + SET_nvs_Sys_Info_tzzone(11); + } + else + { + SET_nvs_Sys_Info_tzzone(12); + } + } else if(zone==-2) + { + if(zone_offset!=0)//zone_offset=1800 -1800 -2:30 + { + SET_nvs_Sys_Info_tzzone(13); + } + else + { + SET_nvs_Sys_Info_tzzone(14); + } + } else if(zone==-1) + { + SET_nvs_Sys_Info_tzzone(15); + } + else if(zone>=0) + { + if(zone_offset==1800) + { + SET_nvs_Sys_Info_tzzone(zone*3+17); + } + else if(zone_offset==2700) + { + SET_nvs_Sys_Info_tzzone(zone*3+18); + } + else + { + SET_nvs_Sys_Info_tzzone(zone*3+16); + } + } struct timeval tv; //tv.tv_sec=(time_t)Localtime;//用本地时间 时区要设置0 相对0时区的时间 @@ -3406,7 +3494,6 @@ void mcu_write_rtctime(unsigned char time[]) my_memcpy((void *)timestamp,(const char *)time,4); //get timestamp zigbee_timestamp_to_time(); - SET_nvs_Sys_Info_tzzone(zone); nvs_eepom_sysInfo_update(); //更新时区信息 diff --git a/packages/artinchip/lvgl-ui/aic_widgets/aic_canvas/libaic_canvas_v8_e907f.a b/packages/artinchip/lvgl-ui/aic_widgets/aic_canvas/libaic_canvas_v8_e907f.a index f3e52b09..080c5157 100644 Binary files a/packages/artinchip/lvgl-ui/aic_widgets/aic_canvas/libaic_canvas_v8_e907f.a and b/packages/artinchip/lvgl-ui/aic_widgets/aic_canvas/libaic_canvas_v8_e907f.a differ diff --git a/target/d12x/t3e-pro/pack/bootloader.bin b/target/d12x/t3e-pro/pack/bootloader.bin index c95a16c1..1ea505db 100644 Binary files a/target/d12x/t3e-pro/pack/bootloader.bin and b/target/d12x/t3e-pro/pack/bootloader.bin differ