在著名的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时间戳通常用于存储和比较日期和时间,因为它们是整数,易于计算和比较。PHP作为常见的服务器端脚本语言,经常用到Unix时间戳进行日期和时间的操作。 这个小工具可能...
Unix时间戳转北京时间,用到“time.h”头文件,是C语言的标准库,使用localtime函数进行转换;北京时间转Unix时间戳,使用mktime函数进行转换;UTC时间转化成北京时间,思路:把UTC时间转换成时间戳,然后时间戳数值...
两种主要的时间戳格式是Unix时间(也称为POSIX时间)和Windows时间。Unix时间广泛应用于Linux和Unix系统,而Windows时间在微软的操作系统中使用。本篇文章将详细解释这两种时间格式以及如何进行相互转换。 Unix时间...
`date2utime` 是一个函数,专门用于将 MATLAB 的串行日期转换为 Unix 纪元时间戳。了解这个函数对于处理与时间相关的计算和数据分析至关重要。下面将详细阐述 `date2utime` 的工作原理、使用方法以及它在 MATLAB 中...
易语言转换Unix时间模块源码,转换Unix时间模块,时间_取现行毫秒,时间_转换Unix时间,时间_Unix时间反转,时间_转换为标准时间,时间_转标准日期时间,时间_转换为标准日期,置标准文本,置标准整数,GetLocalTime
这个时间点通常被称为"Unix纪元"或"EPOCH"。在本主题中,我们将深入探讨如何在C语言中处理UNIX时间戳,这将涉及到`unix_timestamp.c`和`unix_timestamp.h`这两个文件。 `unix_timestamp.c`是C源代码文件,很可能...
模拟unix系统成组链接法,实现磁盘存储空间的管理,假定共有8块可供使用,每3块为一组。
unix中同异步读写效率比较程序,unix环境高级编程
编写C语言程序,模拟UNIX磁盘空间管理中使用的分组链接法。 1.定义一个记录磁盘块号的堆栈S—free[10],以及记录栈中现有磁盘块数的变量S—nfree。 2.定义一个由40个元素构成的结构数组block[40]用作磁盘块存放。 ...
在易语言中,开发时间处理功能时,有时需要进行时间格式的转换,例如将Unix时间戳转换为人类可读的标准时间,或者反之。Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不包括闰秒,通常用于网络...
Unix时间编程涉及操作系统中时间概念的基础知识,以及如何在Unix或类Unix系统上进行时间编程。以下是对Unix时间编程相关知识点的详细说明: 1. Unix时间戳(Unix Timestamp)概念: Unix时间戳是自1970年1月1日0时0...
操作系统中的“读者写者问题”是一个经典的多进程同步问题,主要涉及到并发访问共享资源时的互斥...不过,根据提供的信息,我们已经讨论了读者写者问题的基本概念,以及在Linux和Unix中如何使用信号量来解决这个问题。
本文实例讲述了python正常时间和unix时间戳相互转换的方法。分享给大家供大家参考。具体分析如下: 这段代码可以用来转换常规时间格式为unix时间戳,也可以将unix时间戳转换回来, 例如:1332888820 格式转换成 ...
1. **Unix时间戳的基本理解**:了解Unix时间戳的定义,知道它是从一个特定时间点开始计算的,这个时间点被称为"Unix纪元"。了解其与格林威治标准时间(GMT)的关系,以及在不同时区下的应用。 2. **易语言的数据...
在许多操作系统和编程语言中,Unix时间(time_t)被广泛用于表示系统时间。然而,原始的Unix时间存在一个著名的局限性,被称为“2038年问题”或“Y2K38问题”。这个问题源于Unix时间的32位整数表示,其上限导致时间...
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_...
HP-UNIX,全称为Hewlett-Packard UNIX,是由惠普公司开发的一款操作系统,它是基于UNIX System V Release 4(SVR4)的商业UNIX版本。这个系统主要设计用于惠普的高端服务器和工作站,提供强大的计算能力、高度的可靠...
例如,如果你有两个Unix时间戳,你可以直接相减得到两个时间点之间的秒数差。 转换工具通常包含两个功能:正向转换和反向转换。正向转换是将特定的日期和时间转换为Unix时间戳,反向转换则是将Unix时间戳转换回日期...