android - 如何获取timePicker和System Time的时间差

标签 android

我想做一个小闹钟应用。我想计算系统时间(当前)和来自 TimePicker(由用户选择)的时间之间的时差。我找不到一些好的解决方案。这是我的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm_list);
    timePicker = (TimePicker) findViewById(R.id.timePicker1);
    timePicker.setIs24HourView(true);
    b = (Button) findViewById(R.id.button1);
    c = Calendar.getInstance();
    timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {





    @Override
    public void onTimeChanged(TimePicker arg0, int hours, int minutes) {
        c.set(Calendar.HOUR_OF_DAY, hours);
        c.set(Calendar.MINUTE, minutes);

        chosenTimeMills = c.getTimeInMillis();
    }
});


b.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
                          Date currentDate = new Date(System.currentTimeMillis());
                c.set(Calendar.HOUR_OF_DAY,currentDate.getHours());
                c.set(Calendar.MINUTE, currentDate.getMinutes());
                systemTimeMills = c.getTimeInMillis();

                long difference  =systemTimeMills-chosenTimeMills;
                Date date = new Date(difference);
                Log.d("TAGG", "Difference is: "+date.getHours()+" Hours and "+date.getMinutes()+" minutes");



    }
});
}

我很想知道答案。谢谢,乌斯曼!!!

最佳答案

试试这个

Calendar c2 = Calendar.getInstance();
c2.set(Calendar.HOUR_OF_DAY, 22);
c2.set(Calendar.MINUTE, 30);
long sub = c2.getTimeInMillis() - c.getTimeInMillis();

此处 c 是您创建的 Calender 实例,c2 将是当前 date time 的实例.


编辑

onClick你可以试试

Calendar cal = Calendar.getInstance();
long diff = c.getTimeInMillis() - cal.getTimeInMillis();
long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diff);
int hour = (int) (diffInSec / (60 * 60));
int minremaining = (int) (diffInSec % (60 * 60));
int min = (int) (minremaining / (60));
int secondsRemaining = (int) (minremaining % (60));
Log.e("TAG", "Difference in    milliss   calendar      " + diff);
Log.e("TAG", "hour      " + hour);
Log.e("TAG", "min       " + min);
Log.e("TAG", "sec       " + secondsRemaining);

其中 c 是具有值的 Calendar 实例,在 onTimeChanged 中设置

变量 hourminsecondsRemaining 将为您提供剩余时间。

关于android - 如何获取timePicker和System Time的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16300064/

相关文章:

android - MediaMetadataRetriever setdatasource 出错

java - 如何在android中以编程方式更改Edittext光标颜色?

java - Android - 比较方法违反了它的一般契约

android - 应用程序在 .apk 崩溃

android - 使用 GestureDetector 调用 Longpress 后调用滚动事件

android - 我什么时候需要使用 "android:id"?

android - 如何使用 upload_cert.der 文件创建签名的 apk

java - 安卓和 SQL Server

java - Android:使用 log4j2 创建日志时获取额外的空文件

android - Android广播是否按顺序接收?