BJT转UTC世界协调时

来源:互联网 发布:淘宝号怎么解绑手机号 编辑:程序博客网 时间:2024/06/15 09:59

最近收到朋友发来bjt转换utc的题目,就自己试着实现了下。

计算题目内容

UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。
有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。
你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。
提醒:要小心跨日的换算。

输入格式:

一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

输出格式

一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

以下为本人的代码

package tech.wetech.cms.backup;import java.util.Scanner;public class BJT2UTC {    public static final Integer stepH = 8;// 时差    public static final Integer stepM = 0;// 分差    private static Integer carry = 0;// 分差如果大于60就要进位    public static String trans2UTC(int BJT) throws Exception {        String hour = "";        String minute = "";        if (BJT >= 0 && BJT <= 59) {            hour = bjtH2utcH(0);            minute = String.valueOf(BJT);        } else if (BJT >= 60 && BJT <= 99) {            hour = bjtH2utcH(BJT / 10);            minute = "0" + bjtM2utcM(BJT % 10);        } else if (BJT >= 100 && BJT <= 909) {            hour = bjtH2utcH(BJT / 100);            minute = (BJT % 100) <= 9 ? "0" + bjtM2utcM(BJT % 100) : bjtM2utcM(BJT % 100);        } else if (BJT >= 910 && BJT <= 959) {            hour = bjtH2utcH(BJT / 100);            minute = bjtH2utcH(BJT % 100);        } else if (BJT >= 1000 && BJT <= 2359) {            hour = bjtH2utcH(BJT / 100);            minute = (BJT % 100) <= 9 ? "0" + bjtM2utcM(BJT % 100) : bjtM2utcM(BJT % 100);        } else {            throw new Exception("参数不合法:" + BJT);        }        System.out.println(hour + ":" + minute);        return hour + minute;    }    private static String bjtM2utcM(Integer minute) {        minute -= stepM;        if (minute < 0) {            minute += 60;            carry -=1;        } else if(minute >60) {            minute -= 60;            carry +=1;        }        return minute.toString();    }    private static String bjtH2utcH(Integer hour) {        hour -= stepH + carry;        if (hour < 0) {            hour += 24;        } else if (hour > 23) {            hour -= 24;        }        if (hour == 0) return "";        return hour.toString();    }    public static void main(String args[]) throws Exception {        Scanner sc = new Scanner(System.in);        while (true) {            int BJT = sc.nextInt();            String utc = trans2UTC(BJT);            System.out.println(utc);        }    }}
0 0
原创粉丝点击