mirror of
https://gitee.com/Vancouver2017/luban-lite-t3e-pro.git
synced 2025-12-13 09:58:54 +00:00
增加非标准utc时区
This commit is contained in:
@@ -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]=
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
// #include "cJSON.h"
|
||||
#include <drivers/rtc.h>
|
||||
#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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
//更新时区信息
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user