mirror of
https://gitee.com/Vancouver2017/luban-lite-t3e-pro.git
synced 2025-12-17 20:08:54 +00:00
增加非标准utc时区
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user