国际协和时和北京时间的转换

题目要求

第二周编程作业
1.题目内容:
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。
提醒:要小心跨日的换算。

/*************************************************************
 * author:minx
 * function:utc国际协和时和bjt(北京时间)的换算。
 * relationship:utc=bjt-8
 * version:1.0.0
 * time:2019-5-15
 **************************************************************/
package com.visualworld.example;

import java.util.Scanner;

//必须考虑跨天的运算
public class UtcBtcTime {
    //可能需要辗转相除法
    public static void main(String[] args){
        int UTC=0;
        int BJT=0;

        int B_thousand=0;//千
        int B_hundrend=0;//百
        int B_ten=0;//十
        int B_per=0;//个
        int resultTime = 0;
        Scanner in=new Scanner(System.in);
        System.out.print("请输入BJT:");
        BJT=in.nextInt();
        if (BJT < 0 || BJT > 2359) {
            System.out.println("数据无效,请重新输入!");
            return;

        }
        if (BJT >= 1000)//完整
        {
            B_thousand = BJT / 1000;
            B_hundrend = (BJT - B_thousand * 1000) / 100;
            B_ten = (BJT - (B_thousand * 1000) - (B_hundrend * 100)) / 10;
            B_per = BJT - ((B_thousand * 1000) + (B_hundrend * 100) + (B_ten * 10));
            resultTime = BJT - 8000;
            System.out.println("UTC:" + resultTime);
        } else if (BJT < 1000 && BJT > 800)//有小时
        {
//            B_thousand=0;
            B_hundrend = BJT / 100;
            B_ten = (BJT - (B_hundrend * 100)) / 10;
            B_per = BJT - ((B_hundrend * 100) + (B_ten * 10));
            resultTime = BJT - 800;
            System.out.println("UTC:" + resultTime);
        } else if (BJT < 800 && BJT >= 60) {
            B_thousand = BJT / 1000;
            B_hundrend = (BJT - B_thousand * 1000) / 100;
            B_ten = (BJT - (B_thousand * 1000) - (B_hundrend * 100)) / 10;
            B_per = BJT - ((B_thousand * 1000) + (B_hundrend * 100) + (B_ten * 10));
            resultTime = (24 - (8 - B_hundrend)) * 100 + B_ten * 10 + B_per;
            System.out.println("final time:" + resultTime);
        } else if (BJT < 60 && BJT > 10) {
//            B_thousand=0;
//            B_hundrend=0;
            B_ten = (BJT) / 10;
            B_per = BJT - (B_ten * 10);
            resultTime = BJT - 8;
            System.out.println("UTC:" + resultTime);
        } else {
            B_ten = 0;//保留十位的0
            B_per = BJT;//只有个位
            resultTime = BJT - 8;
            System.out.println("UTC:" + resultTime);
        }
        System.out.println(B_thousand);
        System.out.println(B_hundrend);
        System.out.println(B_ten);
        System.out.println(B_per);
    }

}
//if (10

你可能感兴趣的:(国际协和时和北京时间的转换)