你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 5514|回复: 5

UCT时间转北京时间好处理,但日期怎么办?

[复制链接]

10

主题

33

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2012-4-18 23:06:43 | 显示全部楼层 |阅读模式
 time=(atol((char*)GPS_Time));
 time=(time+80000)%240000; //变换为北京时间

UCT时间转北京时间好处理,但日期怎么办?日期里面的年月日都需要处理,不然日期总是慢8个小时,有没有好的算法?
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-4-19 10:12:24 | 显示全部楼层

RE:UCT时间转北京时间好处理,但日期怎么办?

通过处理时间,当UTC时间+时差大于24的时候,日期就加1。
回复 支持 反对

使用道具 举报

0

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-4-19 20:42:54 | 显示全部楼层

RE:UCT时间转北京时间好处理,但日期怎么办?

转化到任意时区
static const int days_per_month_in_leapyear                [13]                = { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
static const int days_per_month_in_commonyear        [13]                = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// ......
// year,month,day中存储当前日期
void UTC2Timezone(long utctime, int n_timezone, int *year, int *month, int *day)
{
        int * days_per_month;
        utctime /= 10000;
        utctime += n_timezone;
        days_per_month = *year % 4 == 0 ? days_per_month_in_leapyear : days_per_month_in_commonyear ;
        if(utctime >= 24)
        {
                (*day)++;
                if( day > days_per_month[*month] )
                        (*month)++;
                if(*month > 12)
                        (*year)++;
        }
        else if(utctime < 0)
        {
                (*day)--;
                if(*day < 1)
                        (*month)--;
                if(*month < 1)
                        (*year)--;
        }
        *month %= 12;
        //days_per_month = *year % 4 == 0 ? days_per_month_in_leapyear : days_per_month_in_commonyear ;
        day %= days_per_month[month];
}
//......
回复 支持 反对

使用道具 举报

10

主题

33

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2012-4-24 07:47:32 | 显示全部楼层

RE:UCT时间转北京时间好处理,但日期怎么办?

试一试,谢谢!
回复 支持 反对

使用道具 举报

10

主题

33

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2012-4-24 10:43:29 | 显示全部楼层

RE:UCT时间转北京时间好处理,但日期怎么办?

uct时间怎么可能大于等于24呢???
回复 支持 反对

使用道具 举报

10

主题

33

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2012-4-24 10:45:26 | 显示全部楼层

RE:UCT时间转北京时间好处理,但日期怎么办?

uct时间怎么可能小于0呢?
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版