如何编写计算过去时间的程序,精确到秒,不是c语言的也行。万分感谢
我想输入两个时间点(精确到秒)
输出相差的year,day,hour,min,sec
java做的
----------------------------------
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.Date;
public class test {
public static void main(String args[]) throws ParseException
{
Scanner s = new Scanner(System.in);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("请输入起始时间(形如:2012-1-1 21:23:34):");
String str1 = s.nextLine();
System.out.println("请输入截至时间:");
String str2 = s.nextLine();
Date sdate = sdf.parse(str1);
Date edate = sdf.parse(str2);
long sd = sdate.getTime() /1000; //把时间化为秒
long ed = edate.getTime() /1000; //即输入的时间点距 1970 年 1 月 1 日之间的秒数
System.out.println("间隔时间:"+(ed-sd)+"秒");
//下面是把秒化成几年几月几天……
long y,m,d,h,mm,s;
long es = ed-sd;
s = es % 60;
es = (es - s) / 60;
mm = es % 60;
es = (es - mm) / 60;
h = es % 24;
es = (es - h) / 24;
d = es % 30;
es = (es - d)/30;
m = es % 12;
es = (es-m)/12;
y = es ;
System.out.println(y+"年"+m+"月"+d+"天"+h+"小时"+mm+"分"+s+"秒");
}
}
最后得到的间隔多少秒肯定没问题,只是这个几年几月几天这里计算时用的每月30天,所以可能会与习惯不一样,比如
2月1号 到 3月1号 我们习惯的会认为相差一个月,不过这里得到的是29天
额,刚发现,这里还有个问题,按我这样转化,一年只有12个月,一个月30天即一年360天,所以结果有偏差。
这里你可以再考虑下怎么把 这两个时间间隔的 n多秒 转换成 y年m月d天 h时mm分s秒。
两个时间点的间隔 秒数是肯定没问题的。
还有输入的时候要按格式输入时间点时,特别是时间 12:12:59 中间的冒号要是英文下输入,即要半角,不然会抛异常
long totalMilliseconds = System.currentTimeMillis();//它返回从 UTC 1970 年 1 月 1 日午夜开始经过的毫秒数。这个方法非常有用
long totalSeconds = totalMilliseconds / 1000;
int currentSecond = (int)(totalSeconds % 60);
long totalMinutes = totalSeconds / 60;
int currentMinute = (int)(totalMinutes % 60);
long totalHours = totalMinutes / 60;
int currentHour = (int)(totalHours % 24);
int totalDays = (int)(totalHours / 24);
希望可以帮到你