题目大意:给出一个时间(秒为单位),然后将其转换为对应的年月日。
注意事项:unix中生成的时间戳精确到秒级别,而java中精确的毫秒级别,因此,在unix下输入的时间戳要先转换为java下对应的时间戳。(*1000操作)
解题思路:1)将unix时间戳转换为java下的时间戳。2)直接使用java下SimpleDateFormat()类对象的format()方法,将其转换。
代码如下:
package 百度;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* @题目要求:Unix 时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX 时间(POSIX time),
* 是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
* Unix时间戳不仅被使用在 Unix 系统、类 Unix 系统中,也在许多其他操作系统中被广泛采用。
* Moment.js 是一个 Javascript 中用来处理时间的库,给定 Unix 时间戳,他能够返回当前的年月日。你可以实现这个功能吗?
* 提示:4年一闰100年不闰400年又闰
* @输入:输入不超过50行,每行包含一个整数 x 表示一个 Unix 时间戳。(0<=x<=10^10)
* @输出:对于每一行,返回 yyyy mm dd 格式,表示对应的年月日。
*
* @测试输入:
* 103424
* 1368864000
* @测试输出:
* 1970 01 02
* 2013 05 18
*
* @author 崔洪振367
* @version 创建时间:2017年4月22日 下午7:06:23
*/
public class Q2017秋招_Unix时间戳 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n=0;
while (scanner.hasNext() && n<50) {//控制输入的时间戳不超过50条
n++;
long time = scanner.nextLong();
reverse(time);
}
scanner.close();
}
public static void reverse(long time){
Date date = new Date(time*1000);//unix中生成的时间戳精确到秒级别,而java中精确到毫秒级别,所以需要*1000
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd");//关注一下这个类
System.out.println(sdf.format(date));//时间输出方法用format()来实现。
}
}