题解 | 日期换算

日期换算

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;
    }
}

全部评论

相关推荐

2025-12-08 07:42
门头沟学院 Java
27届末九,由于是女生,身边人几乎没有就业导向的,自学只能跟着网课,没人指导,很迷茫。下图是我目前的简历,不知道有需要修改的地方吗?求拷打。下面是目前的学习情况:目前算法过完了一遍力扣100和代码随想录,不过不是很熟,面经看了小林coding、JavaGuide,有一些没用过的技术看得不是很明白,掌握得不是很扎实。再加上常年跟黑马网课听思路,真正自己动手写代码的时间很少,这让我一直不敢投简历,总觉得内里空虚。项目没准备好面试相关的问题,简历上相应的考点不熟。如此种种。。。看到很多很多学长学姐大佬们的面经,愈发觉得面试可怕,自己没准备好,总担心自己是不是无望后端开发了。看到牛客很多同届以及更小一届的同学都找到实习了,很希望自己也能找到实习。而自己又好像摸不到后端学习的门路,只能不断赞叹黑马虎哥写的代码真优雅!微服务架构实在巧妙!消息队列、redis、sentinel、nacos、mybatisplus等等的引入都会让我赞叹这些工具的设计者的巧思,以及包括但不限于Java语言的优雅。然而只是停留在了解的程度,并不熟练。我是很希望能够继续深入探索这些知识的,只不过有一大部分时间都花在学校课程上了。我感觉我被困住了,我一方面必须保证我能够有个不错的学业分使我能有我几乎不想选择的读研退路(还有个原因是复习不全我会焦虑考试挂科,因此我会做好全面的准备,而这一步很费时间),一方面在B站学习各种网课,一方面得考虑提升自己并不扎实的算法基础,另一方面还得准备八股面经。这让我有点苦恼,我好像没那么多时间,因为绝大部分时间都花在了复习学校科目中了。我好像处处用时间,但收效甚微。想问问各位大佬是怎么平衡时间的呢?算法、项目和八股是怎么准备的呢?有什么高效的方法吗?谢谢您们花时间阅读我的稿件!
菜菜狗🐶:大胆投,我当时也是害怕面试,投多了发现根本约不到面🤡
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务