0
点赞
收藏
分享

微信扫一扫

试题 历届真题 时间显示【第十二届】【省赛】【B组】 JAVA 蓝桥杯

一葉_code 2022-03-22 阅读 67

问题描述

小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从1970年1月1日00:00:00到当前时刻经过的毫秒数。
现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。
给定一个用整数表示的时间,请将这个时间对应的时分秒输出。

输入格式

输入一行包含一个整数,表示时间。

输出格式

输出时分秒表示的当前时间,格式形如HH:MM:SS,其中HH表示时,值.
为0到23,MM表示分,值为0到59,ss表示秒,值为0到59。时、分、秒
不足两位时补前导0。

输入格式

输入一行包含一个整数,表示时间。

输出格式


输出时分秒表示的当前时间,格式形如HH:MM:SS,其中HH表示时,值
为0到23,MM表示分,值为0到59,ss 表示秒,值为0到59。时、分、秒
不足两位时补前导0。

样例输入1

46800999

样例输出1

13:00:00

评测用例规模与约定

对于所有评测用例,给定的时间为不超过1018 的正整数。
这道题让我想麻烦了,想到的是硬生生的拼接:

package lijieshiti;

import java.util.Scanner;

public class Main{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		long n = sc.nextLong();

		long Stotal = n / 1000 % (365 * 24 * 60 * 60);
		long H = Stotal / 3600;
		String H1 = "", M1 = "", S1 = "";
		if (H < 10) {
			H1 = "0" + String.valueOf(H);

		} else {
			H1 = String.valueOf(H);
		}
		long M = (Stotal - H * 3600) / 60;
		if (M < 10) {
			M1 = "0" + String.valueOf(M);

		} else {
			M1 = String.valueOf(M);
		}
		long S = (Stotal - M * 60 - H * 3600) % 60;
		if (S < 10) {
			S1 = "0" + String.valueOf(S);

		} else {
			S1 = String.valueOf(S);
		}
		System.out.print(H1 + ":" + M1 + ":" + S1);

	}

}

这个代码就逻辑不错,但是就是不符合要求。

于是再请教了网友,于是出现了新的、简洁的、完美的、钦佩的、满分的代码:

package lijieshiti;

import java.util.Date;
import java.util.Scanner;

public class Main{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Date d = new Date();
		Scanner sc = new Scanner(System.in);
		long n = sc.nextLong();
		d.setTime(n - 28800000);
		System.out.print(d.toString().substring(11, 19));
	}

}

代码在这里,大家可以慢慢品品。

宿舍要关门了,回宿舍了。晚安!

奥利给!!!

举报

相关推荐

0 条评论