如何编写计算过去时间的程序,精确到秒,不是c语言的也行。万分感谢

 我来答
貌似風輕
2013-04-05 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:698万
展开全部

一般可用来计算算法的运行时间,或者比较两个算法那个运行效率更高

#include <stdio.h>
#include <time.h>  // 添加此头文件
#include<windows.h>
void main ()

 long a,b;
 time(&a);       //获取时间,以秒计,从1970年1月一日起算,存于a

 Sleep(2000);           //暂停2000毫秒

 time(&b);

 printf("间隔%d秒\n",b-a); 

}

 

写成

a=time(&b); 

也没问题

运行后a,b的值是一样的

更多追问追答
追问
我想输入两个时间点(精确到秒)
输出相差的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  中间的冒号要是英文下输入,即要半角,不然会抛异常

我是操圣
2013-04-05 · TA获得超过1134个赞
知道小有建树答主
回答量:271
采纳率:100%
帮助的人:77.2万
展开全部
你好,java的可以不
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);
希望可以帮到你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式