1

現在のシステム時刻と挿入されたデータと時刻の違いを見つけたい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

更新日(2012年4月20日)

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-2012:48:06.629:情報/日付は:: >>>(1295):2183時間38分

4

5 に答える 5

5
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コードを取得

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;
}
于 2012-04-19T10:23:08.053 に答える
1

期間(時差)の計算にはJodaTimeを使用します。http://joda-time.sourceforge.net/

于 2012-04-19T10:20:25.293 に答える
1
    Calendar calendar = Calendar.getInstance();
calendar.setTime(date.getYear(),date.getMonth(),date.getDay(),date.getHourOFday(),date.getMinutes(),date.getSeconds); // not syntactically right..
long difference = System.currentTimeMillis()-calendar.getTimeInMillis();

および時間差を取得するため

double hour = difference/(1000*60*60);
double minutes = difference/(1000*60);
于 2012-04-19T10:26:06.977 に答える
0
  • どのような出力が得られますか?
  • どのような出力を期待しますか?

この時間を秒単位で必要とする場合は、#3960661を参照してください。

于 2012-04-19T10:20:16.857 に答える