题解 | 日期换算

日期换算

https://www.nowcoder.com/practice/08f8a66cb5584268a78ecca2749a2da5

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Scanner in = new Scanner(System.in);
        String str1 = in.nextLine();

        //write your code here......
        
        
        String [] strArr = str1.split(" ");

        if(strArr.length != 6){
            System.out.println("您输入的数据不合理");
        } else{
            int [] beijingArr = getTimeArr(strArr);
            String beijingTime = getTimeByArr(beijingArr);
            System.out.println("北京时间为:"+ beijingTime);

            String newYorkTime = getNewYorkTimeByBeijingTime(beijingArr);
            System.out.println("纽约时间为:" + newYorkTime);
        }

    }

    public static String getBeijingTime(int [] timeArr){
        if(timeArr.length != 6){
            System.out.println("您输入的数据不合理");
            return null;
        }
        return arrTimeToString(timeArr);
    }

    public static String getNewYorkTimeByBeijingTime(int [] timeArr){
        if(timeArr.length != 6){
            System.out.println("您输入的数据不合理");
            return null;
        }
        timeArr[3] -= 12;
        timeArr = getTimeArr(timeArr);
        return getTimeByArr(timeArr);
    }

    public static String getTimeByArr(int [] arr){
        if(arr.length != 6){
            return "";
        }
        String [] format = {"-","-"," ",":",":"};
        String str = "" + arr[0];
        for(int i = 1; i < arr.length; i++){
            str = str + format[i - 1] + String.format("%02d", arr[i]);
        }
        return str;
    }

    public static String arrTimeToString(int [] arr){
        String str = "";
        for(int i = 0; i < arr.length; i++){
            str = str + arr[i] + " ";
        }
        return str;
    }

    public static int [] getTimeArr(String []strArr){
        int year = Integer.valueOf(strArr[0]);
        int month = Integer.valueOf(strArr[1]);
        int day = Integer.valueOf(strArr[2]);
        int hour = Integer.valueOf(strArr[3]);
        int minute = Integer.valueOf(strArr[4]);
        int second = Integer.valueOf(strArr[5]);

        if(second > 60){
            minute += second/60;
            second %= 60;
        }
        if(minute > 60){
            hour += minute/60;
            minute %= 60;
        }
        if(hour > 24){
            day += hour/24;
            hour %= 24;
        }
        if(hour < 0){
            hour += 24;
            day --;
            if(day <= 0){
                if(month > 1){
                    int lastMonthDays = getDays(year, month - 1);
                    day += lastMonthDays;
                    month -= 1;
                }else{
                    day += 31;
                    month += 12;
                    year --;
                }
            }
        }
        while(day > getDays(year, month)){
            day -= getDays(year, month);
            month += 1;
            if(month > 12){
                year += month/12;
                month %= 12;
            }
        }
        if(month > 12){
            year += month/12;
            month %= 12;
        }

        int [] arr = new int [6];
        arr[0] = year;
        arr[1] = month;
        arr[2] = day;
        arr[3] = hour;
        arr[4] = minute;
        arr[5] = second;
        return arr;
    }

    public static int [] getTimeArr(int [] arr){
        String [] strArr = new String [arr.length];
        for(int i = 0; i < arr.length; i++){
            strArr[i] = "" + arr[i];
        }
        return getTimeArr(strArr);
    }

    public static int getDays(int year, int month){
        int addDay = 0;
        if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
            addDay ++;
        }
        int nums = 0;
        switch(month){
            case 1 : {nums = 31; break;}
            case 2 : {nums = 28 + addDay; break;}
            case 3 : {nums = 31; break;}
            case 4 : {nums = 30; break;}
            case 5 : {nums = 31; break;}
            case 6 : {nums = 30; break;}
            case 7 : {nums = 31; break;}
            case 8 : {nums = 31; break;}
            case 9 : {nums = 30; break;}
            case 10 : {nums = 31; break;}
            case 11 : {nums = 30; break;}
            case 12 : {nums = 31; break;}
        }
        return nums;
    }
}

全部评论

相关推荐

想申请延毕了,找工作找到崩溃,越找就越想摆烂,还有25届的和我一样感受吗?
码农索隆:没事哒,好兄弟,慢慢来,调整心态,车到山前必有路,感到迷茫的时候,多抬头看看
点赞 评论 收藏
分享
04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务