专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
如何修改ESP8266的日期时间
2019-03-23 17:34
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
9258
4
1480
请那位玩ESP8266的朋友,如何在没有网络的情况下修改它的日期时间,由于ESP8266在有网时SNTP是自动校准,当没有网时它的时间是1970.1.1 8:0:0,所以我想用手机的日期时间发送给ESP8266来修改它的日期时间,但不知道如何修改,请各位好友帮忙。 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
wateras1
2019-03-24 01:11
首先你都没网,用手机app发送给ESP8266?走的是局域网?你定义一个时间格式发送过去,再调用相应的时间函数扔到RTC里面呗或者用定时器也行。
/*******************************************************************
* 函数功能:将当前时间(如:2015-11-9 09:49:25)转换为格林威治时间 格林威治时间:从1970年1月1日开始到现在的秒数
* 输入参数:curData 当前时间
* 输出结果:格林威治时间(单位:秒)
*/
uint32 ICACHE_FLASH_ATTR TimerSwitch( htlj_rtc_time_t curData )
{
unsigned short curyear; // 当前年份 16位
int cyear = 0; // 当前年和1970年的差值
int cday = 0; // 差值年转变为天数
int curmonthday = 0; // 当前月份转变为天数
//当前年份
curyear= curData.year+2000;
//无效年份判断
if(curyear < 1970 || curyear > 9000 )
return 0;
//计算差值并计算出当前年份差值对应的天数
cyear= curyear - 1970;
cday= cyear/4*(365*3+366);
//计算平年和闰年 对应的相应差值年的天数 1970-平 1971-平 1972-闰 1973-平
if(cyear%4 >= 3 )
cday += (cyear%4-1)*365 + 366;
else
cday += (cyear%4)*365;
//当前月份对应的天数 当月的天数不算
switch(curData.month )
{
case 2: curmonthday = 31; break;
case 3: curmonthday = 59; break;
case 4: curmonthday = 90; break;
case 5: curmonthday = 120; break;
case 6: curmonthday = 151; break;
case 7: curmonthday = 181; break;
case 8: curmonthday = 212; break;
case 9: curmonthday = 243; break;
case 10: curmonthday = 273; break;
case 11: curmonthday = 304; break;
case 12: curmonthday = 334; break;
default: curmonthday = 0; break;
}
//平年和闰年月份对应天数 闰年天数+1
if((curyear%4 == 0) && (curData.month >= 3) )
curmonthday+= 1;
//总天数加上月份对应的天数 加上当前天数-1 当天的时间不算
cday += curmonthday;
cday += (curData.date-1);
//返回格林威治时间秒数
return(uint32)(((cday*24+curData.hr)*60+curData.min)*60+curData.sec);
}
加载中...
查看其它4个回答
一周热门
更多
>
相关问题
相关文章
嵌入式编译生成的HEX文件和BIN文件内容详解
0个评论
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
单片机中把部分Flash虚拟成Eeprom使用时,如何延长使用寿命
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
敢问路在何方,STM32迈出的第一步,却注定了它非凡的一生
0个评论
年工作时间真的就等于3年工作经验?也许你就不配
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
/*******************************************************************
* 函数功能:将当前时间(如:2015-11-9 09:49:25)转换为格林威治时间 格林威治时间:从1970年1月1日开始到现在的秒数
* 输入参数:curData 当前时间
* 输出结果:格林威治时间(单位:秒)
*/
uint32 ICACHE_FLASH_ATTR TimerSwitch( htlj_rtc_time_t curData )
{
unsigned short curyear; // 当前年份 16位
int cyear = 0; // 当前年和1970年的差值
int cday = 0; // 差值年转变为天数
int curmonthday = 0; // 当前月份转变为天数
//当前年份
curyear= curData.year+2000;
//无效年份判断
if(curyear < 1970 || curyear > 9000 )
return 0;
//计算差值并计算出当前年份差值对应的天数
cyear= curyear - 1970;
cday= cyear/4*(365*3+366);
//计算平年和闰年 对应的相应差值年的天数 1970-平 1971-平 1972-闰 1973-平
if(cyear%4 >= 3 )
cday += (cyear%4-1)*365 + 366;
else
cday += (cyear%4)*365;
//当前月份对应的天数 当月的天数不算
switch(curData.month )
{
case 2: curmonthday = 31; break;
case 3: curmonthday = 59; break;
case 4: curmonthday = 90; break;
case 5: curmonthday = 120; break;
case 6: curmonthday = 151; break;
case 7: curmonthday = 181; break;
case 8: curmonthday = 212; break;
case 9: curmonthday = 243; break;
case 10: curmonthday = 273; break;
case 11: curmonthday = 304; break;
case 12: curmonthday = 334; break;
default: curmonthday = 0; break;
}
//平年和闰年月份对应天数 闰年天数+1
if((curyear%4 == 0) && (curData.month >= 3) )
curmonthday+= 1;
//总天数加上月份对应的天数 加上当前天数-1 当天的时间不算
cday += curmonthday;
cday += (curData.date-1);
//返回格林威治时间秒数
return(uint32)(((cday*24+curData.hr)*60+curData.min)*60+curData.sec);
}
一周热门 更多>