`

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

}
分享到:
评论

相关推荐

    unix时间戳转换查询小工具

    这个时间点被称为“Unix纪元”。在编程中,Unix时间戳通常用于存储和比较日期和时间,因为它们是整数,易于计算和比较。PHP作为常见的服务器端脚本语言,经常用到Unix时间戳进行日期和时间的操作。 这个小工具可能...

    Unix时间戳转北京时间 UTC时间转北京时间 C代码实现

    Unix时间戳转北京时间,用到“time.h”头文件,是C语言的标准库,使用localtime函数进行转换;北京时间转Unix时间戳,使用mktime函数进行转换;UTC时间转化成北京时间,思路:把UTC时间转换成时间戳,然后时间戳数值...

    windows时间与unix时间转换程序 UnixWin时间转换程序

    两种主要的时间戳格式是Unix时间(也称为POSIX时间)和Windows时间。Unix时间广泛应用于Linux和Unix系统,而Windows时间在微软的操作系统中使用。本篇文章将详细解释这两种时间格式以及如何进行相互转换。 Unix时间...

    date2utime:将 matlab 串行日期转换为 unix 纪元-matlab开发

    `date2utime` 是一个函数,专门用于将 MATLAB 的串行日期转换为 Unix 纪元时间戳。了解这个函数对于处理与时间相关的计算和数据分析至关重要。下面将详细阐述 `date2utime` 的工作原理、使用方法以及它在 MATLAB 中...

    易语言转换Unix时间模块

    易语言转换Unix时间模块源码,转换Unix时间模块,时间_取现行毫秒,时间_转换Unix时间,时间_Unix时间反转,时间_转换为标准时间,时间_转标准日期时间,时间_转换为标准日期,置标准文本,置标准整数,GetLocalTime

    UNIX时间戳处理C源代码

    这个时间点通常被称为"Unix纪元"或"EPOCH"。在本主题中,我们将深入探讨如何在C语言中处理UNIX时间戳,这将涉及到`unix_timestamp.c`和`unix_timestamp.h`这两个文件。 `unix_timestamp.c`是C源代码文件,很可能...

    模拟unix系统成组链接法

    模拟unix系统成组链接法,实现磁盘存储空间的管理,假定共有8块可供使用,每3块为一组。

    unix中同异步读写效率比较程序

    unix中同异步读写效率比较程序,unix环境高级编程

    编写C语言程序,模拟UNIX磁盘空间管理中使用的分组链接法

    编写C语言程序,模拟UNIX磁盘空间管理中使用的分组链接法。 1.定义一个记录磁盘块号的堆栈S—free[10],以及记录栈中现有磁盘块数的变量S—nfree。 2.定义一个由40个元素构成的结构数组block[40]用作磁盘块存放。 ...

    易语言转换Unix时间模块源码

    在易语言中,开发时间处理功能时,有时需要进行时间格式的转换,例如将Unix时间戳转换为人类可读的标准时间,或者反之。Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不包括闰秒,通常用于网络...

    Unix时间编程

    Unix时间编程涉及操作系统中时间概念的基础知识,以及如何在Unix或类Unix系统上进行时间编程。以下是对Unix时间编程相关知识点的详细说明: 1. Unix时间戳(Unix Timestamp)概念: Unix时间戳是自1970年1月1日0时0...

    操作系统 读者写者问题 Linux Unix

    操作系统中的“读者写者问题”是一个经典的多进程同步问题,主要涉及到并发访问共享资源时的互斥...不过,根据提供的信息,我们已经讨论了读者写者问题的基本概念,以及在Linux和Unix中如何使用信号量来解决这个问题。

    python正常时间和unix时间戳相互转换的方法

    本文实例讲述了python正常时间和unix时间戳相互转换的方法。分享给大家供大家参考。具体分析如下: 这段代码可以用来转换常规时间格式为unix时间戳,也可以将unix时间戳转换回来, 例如:1332888820 格式转换成 ...

    易语言unix时间戳转格式

    1. **Unix时间戳的基本理解**:了解Unix时间戳的定义,知道它是从一个特定时间点开始计算的,这个时间点被称为"Unix纪元"。了解其与格林威治标准时间(GMT)的关系,以及在不同时区下的应用。 2. **易语言的数据...

    将Unix时间time_t扩展到2106-02-07 06:28:16 (原本Unix时间只能支持到2038-01-19 03:14:07)

    在许多操作系统和编程语言中,Unix时间(time_t)被广泛用于表示系统时间。然而,原始的Unix时间存在一个著名的局限性,被称为“2038年问题”或“Y2K38问题”。这个问题源于Unix时间的32位整数表示,其上限导致时间...

    gps-time.js:小型实用程序,用于在GPS纪元(1980年1月6日午夜)和Unix纪元(1970年1月1日午夜)之间转换时间,并考虑了leap秒

    gps-time.js 小型实用程序,用于在GPS纪元(1980年1月6日午夜)和Unix纪元(1970年1月1日午夜)之间转换时间,并考虑了leap秒。 在所有时间输入上添加恒定数量的leap秒并不是一件容易的事! 对于任何两次,它们之间...

    oracle中日期类型与unix 时间戳的转换

    Unix时间戳记是从'1970-01-01 00:00:00'GMT开始的秒数,表现为整数型。 Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数 --unix时间戳与date时间互转 SELECT oracle_to_unix(SYSDATE),unix_to_...

    HP-UNIX.rar_hp_hp unix_hp-unix download

    HP-UNIX,全称为Hewlett-Packard UNIX,是由惠普公司开发的一款操作系统,它是基于UNIX System V Release 4(SVR4)的商业UNIX版本。这个系统主要设计用于惠普的高端服务器和工作站,提供强大的计算能力、高度的可靠...

    UnixTime转换工具

    例如,如果你有两个Unix时间戳,你可以直接相减得到两个时间点之间的秒数差。 转换工具通常包含两个功能:正向转换和反向转换。正向转换是将特定的日期和时间转换为Unix时间戳,反向转换则是将Unix时间戳转换回日期...

Global site tag (gtag.js) - Google Analytics