Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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/2/ssis/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_Android_Time - Fatal编程技术网

Java 查找当前时间和用户输入的时间之间的差异

Java 查找当前时间和用户输入的时间之间的差异,java,android,time,Java,Android,Time,我正在尝试制作一个应用程序,用户必须输入日期,系统将显示在这之后经过了多少时间。但它给了我错误的时间。当我输入日期并按下按钮时,它显示:19/06/1989 21:39:32 代码如下: Calendar sd = Calendar.getInstance(); TextView tv; EditText year,month,day,hour,minute,second; Button button2; int y,m,d,h,min,s; @Override protected void o

我正在尝试制作一个应用程序,用户必须输入日期,系统将显示在这之后经过了多少时间。但它给了我错误的时间。当我输入日期并按下按钮时,它显示:
19/06/1989 21:39:32

代码如下:

Calendar sd = Calendar.getInstance();
TextView tv;
EditText year,month,day,hour,minute,second;
Button button2;
int y,m,d,h,min,s;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test7);
    tv = (TextView)findViewById(R.id.textView4);
    year = (EditText)findViewById(R.id.year);
    month = (EditText)findViewById(R.id.month);
    day = (EditText)findViewById(R.id.day);
    hour = (EditText)findViewById(R.id.hour);
    minute = (EditText)findViewById(R.id.minute);
    second = (EditText)findViewById(R.id.second);
    button2 = (Button)findViewById(R.id.button2);
    button2.setOnClickListener(this);

}
public void onClick(View v) {
    y = Integer.parseInt(year.getText().toString());
    m = Integer.parseInt(month.getText().toString());
    d = Integer.parseInt(day.getText().toString());
    h = Integer.parseInt(hour.getText().toString());
    min = Integer.parseInt(minute.getText().toString());
    s = Integer.parseInt(second.getText().toString());
    sd.set(Calendar.YEAR,y);
    sd.set(Calendar.MONTH,m-1);
    sd.set(Calendar.DAY_OF_MONTH,d);
    sd.set(Calendar.HOUR_OF_DAY,h);
    sd.set(Calendar.MINUTE,min);
    sd.set(Calendar.SECOND,s);
    final Runnable refresh = new Runnable() {

        @Override
        public void run() {
            long yourmilliseconds = System.currentTimeMillis();
            long diff = yourmilliseconds - sd.getTimeInMillis();
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
            Date resultdate = new Date(diff);
            tv.setText("" + sdf.format(resultdate));
        }
    };


    Thread updateThread = new Thread() {
        @Override
        public void run() {
            try {
                while (!isInterrupted()) {
                    Thread.sleep(1000);
                    runOnUiThread(refresh);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    updateThread.start();
}

我的密码哪里出错了

你的假设是错误的。不能将两个日期相减,而将两个日期相减。你的“差异”是某个时间段。您必须手动将其转换为年、月、日等(或使用第三个库)。

您的假设是错误的。不能将两个日期相减,而将两个日期相减。你的“差异”是某个时间段。您必须手动将其转换为年、月、日等(或使用第三个库).

如果要向用户显示自输入日期以来经过了多少时间,为什么要显示格式化的日期?请检查此答案,了解如何格式化两个日期之间的差异。如果要向用户显示自输入日期以来经过了多少时间,为什么要显示格式化的日期?请检查此答案,了解如何格式化两个日期之间的差异。