Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个日期之间的差异和当前时间的百分比_Java_Date_Variable Assignment - Fatal编程技术网

Java 两个日期之间的差异和当前时间的百分比

Java 两个日期之间的差异和当前时间的百分比,java,date,variable-assignment,Java,Date,Variable Assignment,我正在尝试使用线程制作一个计时机制,但我在获取两个日期之间的时间差以及使用该差获取当前剩余时间百分比方面遇到了问题。以下是我正在尝试的原型概念: 以下是我的实现: long startMilisecs = System.currentTimeMillis(); long currentMilisecs; long endDateMilisecs = getEndDate().getTime(); int diffMillisecs = ((int)(endDateMilisecs - star

我正在尝试使用线程制作一个计时机制,但我在获取两个日期之间的时间差以及使用该差获取当前剩余时间百分比方面遇到了问题。以下是我正在尝试的原型概念:

以下是我的实现:

long startMilisecs = System.currentTimeMillis();
long currentMilisecs;
long endDateMilisecs = getEndDate().getTime();
int diffMillisecs = ((int)(endDateMilisecs - startMilisecs) / 1000) / 60;
int currPerc; 
while (startMilisecs <= endDateMilisecs) 
{
    currentMilisecs = (int) System.currentTimeMillis();
    currPerc = ((int)currentMilisecs * 100) / diffMillisecs;
    System.out.println(" Current Percentage: " + currPerc);
}

long startMilisecs=System.currentTimeMillis();
长电流毫秒;
long-endDateMilisecs=getEndDate().getTime();
int diffMillisecs=((int)(enddatemillisecs-startMilisecs)/1000)/60;
int currPerc;

而(startMilisecs您需要像这样减去开始时间

currPerc = ((currentMilisecs - startMilisecs) * 100) / diffMillisecs;

获取正确的百分比。

问题在于取自javadoc的
System.currentTimeMillis();

公共静态长currentTimeMillis()

以毫秒为单位返回当前时间。请注意 返回值的时间为毫秒,即 值取决于基础操作系统,可能更大。 例如,许多操作系统以数十秒为单位测量时间 毫秒

有关详细信息的讨论,请参见课程日期的说明 “计算机时间”和协调时间之间可能出现的差异 世界时(UTC)

返回: 当前时间与UTC 1970年1月1日午夜之间的差值(以毫秒为单位)

因此,以毫秒为单位的当前时间基于1970年1月1日UTC,而不是开始日期

您需要通过从
System.currentTimeMillis();
给出的值中减去开始时间来计算当前时间

我基本上是在这里建立你的链接图像。还可以进行其他替代计算。

检查以下内容:

 public static int getPercentageLeft(Date start, Date end) {
        long now = System.currentTimeMillis();
        long s = start.getTime();
        long e = end.getTime();
        if (s >= e || now >= e) {
            return 0;
        }
        if (now <= s) {
            return 100;
        }
        return (int) ((e - now) * 100 / (e - s));
    }
public static int getPercentageLeft(日期开始、日期结束){
long now=System.currentTimeMillis();
长s=start.getTime();
long e=end.getTime();
如果(s>=e | | now>=e){
返回0;
}

如果(现在)百分比不是从0startMilisecs=System开始的,这是什么意思?currentTimeMillis()应该是Date1