在著名的unix系统中,使用了一种简洁高效的时间表示方法,即:
将1970年1月1日0点作为“unix纪元”的原点,从1970年1月1日开始经过的秒数存储为一个32位整数
请编写一个程序,帮助把一个unix时间辍,转换成形如"YYYY-mm-dd HH:ii:ss"的格式,其中的字母分别代表
将1970年1月1日0点作为“unix纪元”的原点,从1970年1月1日开始经过的秒数存储为一个32位整数
请编写一个程序,帮助把一个unix时间辍,转换成形如"YYYY-mm-dd HH:ii:ss"的格式,其中的字母分别代表
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
public class ParseTime
{
//there is not a ";"
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
ArrayList al=new ArrayList();
Scanner s=new Scanner(System.in);
System.out.println("输入一个整数(输入完毕后输入-1!)");
long line;
line=s.nextLong();
while(line!=-1)
{
al.add(new Long(line));
System.out.println("输入一个整数(输入完毕后输入-1!)");
line=s.nextLong();
}
//al.add(new Long(1234567890));
//al.add(new Long(10111111));
for(int i=0;i<al.size();i++)
{
Long l=(Long)al.get(i);
parse(l);
parseTime(l);
}
}
private static void parse(long tsec)
{
long tday=tsec/86400;
long second=tsec-(tday)*86400;
int year=1970;
int month=1;
long hour;
long minite;
long tsecond;
int dom;
boolean loop=false;
loop=isLoop(year);
int yd=loop?366:365;
while(tday>=yd)
{
year++;
tday=tday-yd;
loop=isLoop(year);
yd=loop?366:365;
}//得到最后一年是否为瑞年
//
dom=getMonthDays(month,loop);
while(tday>=dom)
{
month++;
tday-=dom;
dom=getMonthDays(month,loop);
}
hour=second/3600;//24进制小时
minite=(second-hour*3600)/60;
tsecond=(second%3600%60);
//格式化时间
String shour=hour>9?""+hour:"0"+hour;
String smonth=month>9?""+month:"0"+month;
String sday=tday>9?""+(tday+1):"0"+(tday+1);
String smi=minite>9?""+(tday+1):"0"+(tday+1);
String sse=tsecond>9?""+(tsecond):"0"+(tsecond);
System.out.println(year+"-"+smonth+"-"+(sday)+" "+shour+":"+smi+":"+tsecond);
}
private static boolean isLoop(long a)
{
if((a%4==0&&a%100!=0)||(a%400==0))
{
//瑞年
return true;
}
return false;
}
//月份的天数
public static int getMonthDays(int month, boolean loop)
{
switch(month)
{
//case(1|3|5|7|8|10|12):return 31;
case 2:return loop?29:28;
case 4:return 30;
case 6:return 30;
case 9:return 30;
case 11:return 30;
default:return 31;
}
}
//另外一种方法
public static void parseTime(long second)
{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d=new Date((second-8*3600)*1000);
System.out.println(sdf.format(d));
}
}