北京时间转 UTC
#include <stdio.h>
/**
UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。
有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。
你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
提醒:要小心跨日的换算。
输入格式:
一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
输出格式:
一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
输入样例:
903
输出样例:
103
*/
int main() {
const int MINUTE = 60;
const int HOUR = 24;
printf("请输入需要转换的北京时间:");
int bjt = 0;
scanf("%d",&bjt);
printf("你输入的北京时间是:%d\n",bjt); // 2359
if(bjt<0 || bjt>2359){
printf("输入的时间不合法!");
return 0;
}
int hour = bjt /100;
int min = bjt - hour * 100;
int total_mins = hour * MINUTE + min;
int total_utc_min = total_mins - 8*MINUTE;
int utc_h = 0; // UTC 小时
int utc_min = 0; // UTC 分钟
if(total_utc_min>0){
utc_h = total_utc_min / MINUTE;
utc_min = total_utc_min - utc_h * MINUTE;
}else{
total_utc_min += HOUR * MINUTE;
utc_h = total_utc_min / MINUTE;
utc_min = total_utc_min - utc_h * MINUTE;
}
printf("转换为UTC的时间为:%d H %02d min\n",utc_h,utc_min);
if(utc_h>0){
printf("%d%02d\n",utc_h,utc_min);
}else {
printf("%02d\n",utc_min);
}
return 0;
}