在著名的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));
}
}
分享到:
相关推荐
Unix时间戳转北京时间,用到“time.h”头文件,是C语言的标准库,使用localtime函数进行转换;北京时间转Unix时间戳,使用mktime函数进行转换;UTC时间转化成北京时间,思路:把UTC时间转换成时间戳,然后时间戳数值...
易语言转换Unix时间模块源码,转换Unix时间模块,时间_取现行毫秒,时间_转换Unix时间,时间_Unix时间反转,时间_转换为标准时间,时间_转标准日期时间,时间_转换为标准日期,置标准文本,置标准整数,GetLocalTime
模拟unix系统成组链接法,实现磁盘存储空间的管理,假定共有8块可供使用,每3块为一组。
unix中同异步读写效率比较程序,unix环境高级编程
编写C语言程序,模拟UNIX磁盘空间管理中使用的分组链接法。 1.定义一个记录磁盘块号的堆栈S—free[10],以及记录栈中现有磁盘块数的变量S—nfree。 2.定义一个由40个元素构成的结构数组block[40]用作磁盘块存放。 ...
本文实例讲述了python正常时间和unix时间戳相互转换的方法。分享给大家供大家参考。具体分析如下: 这段代码可以用来转换常规时间格式为unix时间戳,也可以将unix时间戳转换回来, 例如:1332888820 格式转换成 ...
操作系统 读者写者问题 Linux Unix 操作系统 读者写者问题 Linux Unix 操作系统 读者写者问题 Linux Unix
gps-time.js 小型实用程序,用于在GPS纪元(1980年1月6日午夜)和Unix纪元(1970年1月1日午夜)之间转换时间,并考虑了leap秒。 在所有时间输入上添加恒定数量的leap秒并不是一件容易的事! 对于任何两次,它们之间...
Unix时间戳记是从'1970-01-01 00:00:00'GMT开始的秒数,表现为整数型。 Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数 --unix时间戳与date时间互转 SELECT oracle_to_unix(SYSDATE),unix_to_...
对于unix时间戳来说,可以很方便的查询和转换。php等程序都可以借鉴的。
UNIX用户手册UNIX用户手册UNIX用户手册UNIX用户手册UNIX用户手册UNIX用户手册UNIX用户手册UNIX用户手册UNIX用户手册UNIX用户手册UNIX用户手册UNIX用户手册
标准的成组链接法。30个盘块,五个一组,
Unix时间戳和时间之间的转换工具 将2017-08-09转换成时间戳,以及将Unix时间戳转换成20170-08-09的格式化时间
dos2unix,unix2dos,mac2unix,unix2mac
unix程序员手册,适合新手入门,方便查阅!
模拟UNIX系统成组链接法实现磁盘存储空间的管理.doc
Unix手册 Unix手册 unix 用户手册 unix 用户手册 unix 用户手册
UNix操作手册UNix操作手册UNix操作手册UNix操作手册UNix操作手册
首先,我们来思考一个问题,在三菱PLC中,你如何计算昨天的某个时间点,到现在为止过了多少秒? 可能有人会说,这个简单,我搞一个计数器,1秒增加1,不就完事了? 那么,如果中途断了几十分钟电呢? 有人可能...
将nuix中的日期格式与windows日期格式(yyyy-MM-dd HH:mm:ss)互转,前提传入的格式正确.