java - 如何在android中获得2次之间的差异

标签 java android calendar

我想找出当前系统时间和插入的数据&时间 String 之间的差异。我试过这个:

 try {

            String strFileDate = "2012-04-19 15:15:00";
            DateFormat formatter2 = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
            Date date = formatter2.parse(strFileDate);
            long difference = date.getTime() - System.currentTimeMillis();
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(difference);
            Toast.makeText(getBaseContext(),
                    formatter2.format(calendar.getTime()), Toast.LENGTH_LONG)
                    .show();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

但它没有给我正确的结果。我做得对吗?

更新

我试过以下::

String strFileDate = "2012-04-19 15:15:00";
            DateFormat formatter2 = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
            Date date = formatter2.parse(strFileDate);
            long diffInMs = date.getTime()
                    - new Date(System.currentTimeMillis()).getTime();

            long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMs);

            long hour = diffInSec / (1000 * 60 * 60);
            double minutes = diffInSec / (1000 * 60);
            // long diffInHour = TimeUnit.to(diffInMs);

            Toast.makeText(getBaseContext(),
                    "left time is :: " + hour + ":" + minutes,
                    Toast.LENGTH_LONG).show();

输出:: 剩余时间为::-2 : -131.0

更新(20/4/2012)

try {
            Date dt = new Date();
            String strFileDate = "2012-04-20 13:10:00";
            DateFormat formatter2 = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
            Date date = formatter2.parse(strFileDate);
            String s = getTimeDiff(dt, date);
            Log.i("Date is :: >>> ", s);
        } catch (Exception e) {
            e.printStackTrace();
        }
 public String getTimeDiff(Date dateOne, Date dateTwo) {
        String diff = "";
        long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime());
        diff = String.format("%d hour(s) %d min(s)", TimeUnit.MILLISECONDS.toHours(timeDiff),
                TimeUnit.MILLISECONDS.toMinutes(timeDiff) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(timeDiff)));
        return diff;

输出: 04-20 12:48:06.629: 信息/日期是::>>>(1295):2183 小时 38 分钟

最佳答案

String strFileDate = "2012-04-19 15:15:00";
DateFormat formatter2 = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date date = formatter2.parse(strFileDate);
long diffInMs = date.getTime() - new Date(System.currentTimeMillis()).getTime();


long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMis);

long diffInHour = TimeUnit.MILLISECONDS.toHours(diffInMis);

使用 TimeUnit 获取秒数。 http://developer.android.com/reference/java/util/concurrent/TimeUnit.html

编辑:

获取TIMEUNIT Code here

public String getTimeDiff(Date dateOne, Date dateTwo) {
        String diff = "";
        long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime());
        diff = String.format("%d hour(s) %d min(s)", TimeUnit.MILLISECONDS.toHours(timeDiff),
                TimeUnit.MILLISECONDS.toMinutes(timeDiff) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(timeDiff)));
        return diff;
}

关于java - 如何在android中获得2次之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10226002/

相关文章:

Android 应用程序没有响应后退按钮

windows - 如何将 iCalendar 与 Outlook 同步

ios - 具有 iOS 年度 View 的日历控件

android - 带有 RecyclerView 和 Cardviews 的 ContextMenu

android - 使用 aSmack 为 XMPP 群聊创建 MUC 房间时发生 ClassCastException

angularjs - 如何使用 "controller as"语法通过 AngularJS ui-calendar 获取日历对象?

java - 当我的 webapp 服务器出现错误时,我应该提供什么服务?

java - 跨并行继承层次结构访问方法

java - 为什么菱形运算符不适用于 Java 7 中的 java.util.Collections 方法?

java - 具有另一种数字格式的货币符号