先声明,别一看标题就鄙视我。我也会用System.currentTimeMills();
只是我现在要获取的程序运行时间有一个特定的环境。我的程序要修改系统时间。System.currentTimeMills()这个方法本来就是获取当前系统时间的毫秒数的,所以就有错了。各位看明白的想下看还有什么方法可以实现咯。本人也仔细想想。
PS。每天回帖可得10分可用分,大家积极回帖啊(but,要跟标题相关的)

解决方案 »

  1.   

    我想一个很土的办法给你……
    设置一些变量,时分秒各一个……
    然后每Thread.sleep(1000),秒就+1
    秒到60了就归零,分就+1……是不是很臭的方法……
      

  2.   


    你自己要改时间,只能这样了吧,总不能从http:连接到标准校时服务器去取时间吧。而且不一定能连上网,如果你修改时间不频繁,应该是一楼的方法最好,比建立线程计时到准确。
      

  3.   

    改时间前long l = System.currentTimeMills();
    long t = l;
    boolean b = true;
    while(b){
     t++;
    }想看时间的时候吧t返回回去减轻l就是耗时
      

  4.   

    做一个定时器计时就可以吧,好像Timer类吧,忘了,查查API
      

  5.   

    现在问题有点棘手了。我是要修改2次系统时间,第一次是将时间指定修改到9点。然后这个Java程序执行完毕,再用另一种语言去做一些操作。之后再将系统时间还原。中间另外一种语言操作所花的时间也不确定。
      

  6.   

    你的java程序启动后就记录启动时间,然后做一个计时线程然后你执行你的任何操作。以后想要系统时间了,问计时线程要。
      

  7.   

    用下面这个方法试试,这个和系统的时间无法,只是一个计时器   long startTime = System.nanoTime();
       // ... the code being measured ...
       long estimatedTime = System.nanoTime() - startTime;
    高宏伟
    QQ 21807822
      

  8.   

    谢谢热心的你,不过你有看到我后面的补充么?我的程序结构相当于是这样的。第一部分:Java程序修改系统时间到9:00.第二部分:c语言封装的一个工具做业务操作。第三部分:将系统时间还原。
    这个时间的begin和end根本就不在同一个Java类实例中(难点所在)
      

  9.   

    1.记录当前时间 , t1
    2.修改时间到9:00.
      记录当前时间   t2
    3.运行c程序
    4.c程序运行完成
      记录当前时间   t3  //则c程序运行时间为 t3-t2
    5.修改系统时间到 t1+(t3-t2)
      

  10.   

    计时线程也是不准确的,
    如果你线程里不休眠,空转导致cpu浪费,也影响别的线程和进程的运行
    如果使用休眠,而休眠又有不确定性,且依赖java的时间函数
      

  11.   

    sleep中间可能会被中断
    如果不依赖系统时间,无法保证休眠时间的准确性比如你 sleep(2000),中间被中断了,实际可能只休眠了1秒,那计时器不是就不准确了?
      

  12.   

    你java程序运行后,改了时间,做个定时器,一直运行,当服务器用,并给C程序留个访问接口,能停止java程序的。启动C程序并运行完后,访问java程序的接口停止计时器并修改回时间。