admin 管理员组文章数量: 887031
2024年1月19日发(作者:sql execute)
-- 格林威治时间转换为北京时间
-- 输入参数 年(4位),月,日,时,分,秒
-- 输出参数 年(4位),月,日,时,分,秒
local function localtime(y, m, d, hh, mm, ss )
hh = hh+8 -- 格林威治时间 + 8 小时 = 北京时间
if ( hh < 24 ) then --没有跨天,则计算完成
return y, m, d, hh, mm, ss
end
-----下面是跨天后的计算--------------------
hh = hh-24
d = d+1 -- 日期加一天
--按月判断
if (m ==4) or (m==6) or (m==9) or (m==11) then --跨小月的判断
if d > 30 then
d = 1
m = m+1
end
elseif (m ==1) or (m==3) or (m==5) or (m==7) or (m==8) or (m==10)
then --跨大月的判断
if d > 31 then
d = 1
m = m+1
end
elseif m==12 then --12 月,要判断是否跨年
if d>31 then
y = y+1
d = 1
m = 1
end
elseif m==2 then --2 月,要判断是否是闰年
if( ( y@0 == 0 ) or -- 能被400整除,一定是闰年
( y%4 ==0 ) and ( y0 ~=0 ) ) then --能被4整除,但不能被100整除,一定是闰年
if( d>29 ) then --闰年2月,可以有29号
m = 3
d = 1
end
elseif ( d>28 ) then --非闰年2月,可以有28号
m = 3
d = 1
end
end
return y, m, d, hh, mm, ss --计算完成,开始输出
end
int fd, nset, nread;
static char *uart_device = "/dev/ttySAC0";
fd = open(uart_device, O_RDWR|O_NONBLOCK);
if(fd == -1)
{
printf("Open %s failed!n", uart_device);
exit(1);
}
nset = set_opt(fd, 115200, 8, 'N', 1);
if(nset == -1)
{
printf("Set %s failed!n", uart_device);
exit(1);
}
版权声明:本文标题:格林威治时间转北京时间 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705604785h492068.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论