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);

}


本文标签: 时间 输出 北京