0

Android アプリで解析している XML ファイルがあります。ファイルが変更されていない場合は、解析したくありません。

ファイルが最後に変更された時刻を取得でき、GMT のサーバー ヘッダーから最終変更日を取得できますが、今何をすべきかわかりません...

    //this is a string: status.getHeader("last-modified"); 
    //Shows like so: Tue, 05 March 2013 16:45:02 GMT
    String serverlastmodified = status.getHeader("last-modified");    
    Log.e("Header",serverlastmodified);

    Date s = status.getTime();
    String filelastgotten = s.toGMTString();
    //String shows like so: 5 Mar 2013 19:41:43 GMT
    Log.e("LM", filelastgotten);

//this needs to be a great-than / less-than? 
//But I cannot do that to a string... so change to int?
    if(serverlastmodified.equals(filelastgotten)){
        Log.e(TAG,"YES!");
    }else{
        Log.e(TAG,"NO!");
    }

編集:::::::::

これはどのように見えますか?

SimpleDateFormat と toGMTString(); を使用して、2 つの日付が同じではないことを確認しました。

  String serverLastModified = status.getHeader("last-modified");
                SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyy HH:mm:ss zzz");

                Date d = null;
                try {
                    d = sdf.parse(serverLastModified);
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                Date fileLastGotten = status.getTime();

                Log.e("DATE1", d.toGMTString());
                Log.e("DATE2", fileLastGotten.toGMTString());

                if (d.before(fileLastGotten)) {
                    Log.e("DS", "YES!");
                } else {
                    Log.e("DS", "NO!");
                }
4

3 に答える 3

1

ネイティブ アプリは、解析するファイルの MD5 ハッシュを保持する必要があります。ファイルをリクエストする前に、その MD5 をサーバーにリクエストしてください。この MD5 がローカルの MD5 と一致する場合は、ファイルを要求しないでください。それ以外の場合は、実行して解析します。新しいファイルが解析される場合は、ネイティブ MD5 を更新することを忘れないでください。

于 2013-03-05T21:23:42.517 に答える
0

あなたはそれをパースする必要があります

try {
    long serverTime = Date.parse(serverLastModified).getTime();
    long myTime = status.getTime.getTime();
    if (serverTime != myTime) {
        //Not equals
    } else {
        //equals
    }
} catch (Exception e) {
    //can't parse server string
}
于 2013-03-05T21:39:06.400 に答える