`

自己写的根据unix纪元法 得到时间

阅读更多

在著名的unix系统中,使用了一种简洁高效的时间表示方法,即:
将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));
	}
	

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics