BJT转UTC

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。

提醒:要小心跨日的换算。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package uTC2BJT;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
int a,b=0;
Scanner in = new Scanner(System.in);
int s = in.nextInt();
a = s/100;
b = s-a*100;
if(a<0|a>24|b<0|b>60)
{
System.out.println("input error");
}
else if(a<8)
{
System.out.println(s-800+2400);
}
else if(a>8)
{
System.out.println(s-800);
}
else if(a==8&b<10)
{
System.out.println("0"+b);
}
}
}

  • 1、首先需要明确输入的数据,这个数据可能是一位数,两位数,三位数,四位数。而且,输入的数据是代表时间的,所以有限制前两位为00 ~ 24,后两位为00 ~ 59.所以当输入不符合实际时,即为输入错误,此时没有结果,应返回输入错误。
  • 2、基本的算法就是北京时间的变量在时钟减去8即为UTC。而当北京时钟小于8时,往后退8小时,此时为昨天,而单纯的减去会出现负值,所以此时采用if语句分情况讨论。
  • 3、另外,由于单纯用数字表示时间,且数字可为1 ~ 4位数,所以为了避免标示不清,需要对特殊情况的输出加以表示,例如,但0时7分时,输出为07,表示00:07。