自己写的根据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));
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值