问题描述
小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从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));
}
}
代码在这里,大家可以慢慢品品。
宿舍要关门了,回宿舍了。晚安!
奥利给!!!