Masalah dengan membandingkan tanggal - NSDate

OLD DATE: 2011-04-06 10:58:43 +0000
NEW DATE: 2011-04-06 10:58:43 +0000

Saya perlu membandingkan dua tanggal ini. Ketika yang baru lebih besar dari yang lama, ini penting bagi saya. Tapi saya punya masalah, kode saya selalu masuk ke blok kode perbandingan itu. Jadi contoh tanggal di atas berbeda dengan aplikasi saya tetapi sama, saya tidak mengerti bagaimana saya mendapatkan hasil yang salah di sini. Ini kodenya:

Something *existing;

for(existing in exisingDatabaseItems)
{
    Something *newFromWebService;

    for(newFromWebService in WSArray)
    {
        if(existing.SomethingId == newFromWebService.SomethingId)
        {
            if([existing.LastModifiedOnDate compare:newFromWebService.LastModifiedOnDate] == NSOrderedAscending)
            {
                // It always get in here???                        
                NSLog(@"OLD: %@", existing.LastModifiedOnDate);
                NSLog(@"NEW: %@", newFromWebService.LastModifiedOnDate);

                break;
            }
        }
    }
}

person 1110    schedule 06.04.2011    source sumber
comment
Apakah kode akan masuk ke blok, jika Anda menetapkan salah satu tanggal sebelumnya ke nilai lainnya? Misalnya: existing.LastModifiedOnDate = newFromWebService.LastModifiedOnDate?   -  person Lepidopteron    schedule 06.04.2011
comment
Kedua daftar diisi dengan semua data. Lalu saya membandingkan item demi item.   -  person 1110    schedule 06.04.2011


Jawaban (1)


Pastikan tanggal tersebut tidak memiliki komponen milidetik; logging Anda tidak menampilkan UTC penuh.

person Simon Lee    schedule 06.04.2011
comment
Saya menonton variabel dan debugger dan tidak ada milidetik. Saya mendapatkan tanggal dari layanan web dengan milidetik tetapi saya memformat tanggal itu sebelum menyimpannya dalam objek. Kedua tanggal tersebut diformat dengan cara yang sama. - person 1110; 06.04.2011
comment
Apa yang Anda dapatkan jika menelepon... - (BOOL)isEqualToDate:(NSDate *)anotherDate - person Simon Lee; 06.04.2011
comment
Oke untuk keduanya berapa nilai (NSTimeInterval) dari - (NSTimeInterval)timeInterval Since1970 - person Simon Lee; 06.04.2011
comment
yang ini dari layanan web 4.9406564584124654e-324 yang ini dari database = 1302087523 Beginilah cara saya mendapatkan ini: double s = [yang ada.LastModifiedOnDate timeInterval Since1970]; double e = [newFromWebService.LastModifiedOnDate timeInterval Since1970]; - person 1110; 06.04.2011
comment
Saya menemukan solusi di sini stackoverflow.com/questions/2954668/ - person 1110; 06.04.2011