抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > 用C语言将当前北京时间转换成UTC时间戳

用C语言将当前北京时间转换成UTC时间戳

时间:2021-02-28 14:15:26

相关推荐

用C语言将当前北京时间转换成UTC时间戳

时间戳表示格式

UNIX时间戳

指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,不考虑闰秒。

例如:

timestamp:1658976485代表格林威治时间-07-28 02:48:05

以秒为单位的时间戳,用Java,python,PHP等语言都有特定接口可以获取,而面向过程的C语言只能通过获取当前时间来转换成时间戳。

因为实际应用中我并不是用time.h 的接口获取当前时间,所以代码中就不写当前时间的获取了,只用固定值做验证,实际应用中可根据实际情况获取当前时间。

int main(){int LeapYear[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int NoLeapYear[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int now_year = ;int now_month = 7;int now_day = 28;int utc_year = 1970;int utc_month = 0;int utc_day = 0;int sum_day_y = 0;int sum_day_m = 0;int sum_day = 0;int i = 0;int j = 0;int now_hour = 1;int now_min = 29;int now_sec = 45;int now_utc = 0;//以.07.28 01:29:45 为例//算出整距离格林威治1970年总天数//过程中区分闰年和平年for (i = utc_year; i < now_year; i++){if ((i % 4 == 0 && i % 100 != 0)|| (i % 400 == 0)){sum_day_y += 366;}else{sum_day_y += 365;}}printf("sum_day_y = %d\n", sum_day_y);//算.01.01到.07.28的天数//与1970年到整的天数相加-1//中间区分闰月和平月//如果当前月份是1月,则直接用当前day-1if (now_month == 1){sum_day_m = now_day - 1;}else{for (i = 0; i < now_month-1; i++){if ((now_year % 4 == 0 && now_year % 100 != 0)|| (now_year % 400 == 0)){sum_day_m = sum_day_m + LeapYear[i]; }else{sum_day_m = sum_day_m + NoLeapYear[i];}}sum_day_m = sum_day_m + now_day - 1;}sum_day = sum_day_y + sum_day_m;//当前天数距离1970.01.01 00:00:00 有多少秒 + 当天的01:29:45有多少秒now_utc = sum_day * 24 * 60 * 60;now_utc = now_utc + (now_hour * 60 + now_min) * 60 + now_sec;//减去北京东八区8个时区now_utc = now_utc - (8 * 60 * 60);printf("now_utc = %d\n", now_utc);return 0;}

https://tool.lu/timestamp/

这是时间戳转换工具,可以做验证用

如果觉得《用C语言将当前北京时间转换成UTC时间戳》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。