PRELOADER

不念过去 不负现在 不畏将来

当前文章 : 《BJT转UTC》

12/4/2018 —— 

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。

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

代码:

  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。