3

私のAndroidアプリでは、HTTPリクエストを介して次の形式で日付と時刻を取得しています。

4月17日火曜日16:23:33IST2012

今、その時間と現在の時間の時間差を計算したいのですが、インターネットで時間差を計算する方法はたくさんありますが、それらのソリューションはすべて異なる形式です。上記の時間形式で時間差を計算するにはどうすればよいですか?

編集: これは私がうまく機能して使用したコードです。

  DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
  Date dateOne = df.parse("Tue apr 22 13:07:32 IST 2012");
  Date dateTwo = df.parse("Tue Apr 22 13:07:33 IST 2012");   
  long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime());
  System.out.println("difference:" + timeDiff); //differencs in ms

ただし、dateTwoとして使用するには、現在の時刻を「Tue apr 2213:07:32IST2012」の形式で取得する必要があります。

4

5 に答える 5

6

このコードもできます:::

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
Date dateOne = df.parse("2011-02-08 10:00:00 +0300");
Date dateTwo = df.parse("2011-02-08 08:00:00 +0100");   
long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime());
System.out.println("difference:" + timeDiff);   // difference: 0
于 2012-04-18T05:10:48.843 に答える
1

このコードを試してください

Date pdate = /* your date comming from HTTP */
Date cdate = new Date(System.currentTimeMillis());

long difference = cdate.getTime() - pdate.getTime();
于 2012-04-18T05:04:31.577 に答える
1

SimpleDateFormat(String pattern)上記の日付を表すパターンを使用してオブジェクトを作成します。

次にparse(String)、日付文字列を使用して渡します。オブジェクトを返す必要がありDateます。その後、 を使用しDate.getDateInstance().getTime()て現在の時刻を取得できます。

時差を取得するには、現在の時刻からサーバーの時刻を差し引くだけです。

于 2012-04-18T05:06:13.607 に答える
0

以下のコードを使用してこれを行うことができます。

String format = "Tue Apr 17 16:23:33 IST 2012";
    int month = 0;

    Calendar yourDate = Calendar.getInstance();

    String[] months = new String[] { "Jan", "Feb", "Mar", "Apr", "May",
            "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
    String datArr[] = format.split(" ");

    String[] time = datArr[3].split(":");

    for (int i = 0; i < months.length; i++) {
        if (months[i] == datArr[1]) {
            month = i;
        }
    }

    yourDate.set(Integer.parseInt(datArr[5]), month, Integer.parseInt(datArr[2]), Integer.parseInt(time[0]),
            Integer.parseInt(time[1]));

    Log.i("Your Date= ", yourDate.toString());
    Log.i("Now Date= ",Calendar.getInstance().toString());

これを使用すると、これら 2 つの日付の時差を取得できます。

于 2012-04-18T05:10:57.783 に答える
0

このメソッドを使用して時間差をミリ秒単位で計算し、秒、分、時間、日、月、年で出力を取得できます。

ここからクラスをダウンロードできます: DateTimeDifference GitHub リンク

  • 使い方は簡単
long currentTime = System.currentTimeMillis();
long previousTime = (System.currentTimeMillis() - 864000000); //10日前

Log.d("DateTime: ", "秒との差: " + AppUtility.DateTimeDifference(currentTime, previousTime, AppUtility.TimeDifference.SECOND));
Log.d("DateTime: ", "分との差: " + AppUtility.DateTimeDifference(currentTime, previousTime, AppUtility.TimeDifference.MINUTE));
  • 以下の例を比較できます
if(AppUtility.DateTimeDifference(currentTime、previousTime、AppUtility.TimeDifference.MINUTE) > 100){
    Log.d("DateTime: ", "2 つの日付の間に 100 分以上の差があります。");
}そうしないと{
    Log.d("DateTime: ", "2 つの日付の差は 100 分以内です。");
}
于 2017-08-15T20:37:16.160 に答える