ปัญหาในการเปรียบเทียบวันที่ - NSDate

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

ฉันต้องเปรียบเทียบสองวันนี้ เมื่อสิ่งใหม่ยิ่งใหญ่กว่าเก่าสิ่งนี้สำคัญสำหรับฉัน แต่ฉันมีปัญหารหัสของฉันมักจะอยู่ในบล็อกโค้ดเปรียบเทียบนั้น ดังนั้นตัวอย่างวันที่ข้างต้นจึงแตกต่างกันไปตามแอปพลิเคชันของฉัน แต่เหมือนกัน ฉันไม่เข้าใจว่าฉันได้รับผลลัพธ์ที่ผิดที่นี่ได้อย่างไร นี่คือรหัส:

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 แหล่งที่มา
comment
รหัสจะเข้าสู่บล็อกหรือไม่หากคุณตั้งค่าวันที่ใดวันที่หนึ่งก่อนหน้าเป็นค่าอื่น ตัวอย่างเช่น: existing.LastModifiedOnDate = newFromWebService.LastModifiedOnDate?   -  person Lepidopteron    schedule 06.04.2011
comment
ทั้งสองรายการเต็มไปด้วยข้อมูลทั้งหมด จากนั้นฉันจะเปรียบเทียบทีละรายการ   -  person 1110    schedule 06.04.2011


คำตอบ (1)


ตรวจสอบให้แน่ใจว่าวันที่เหล่านั้นไม่มีส่วนประกอบระดับมิลลิวินาที การบันทึกของคุณไม่ได้แสดง UTC แบบเต็ม

person Simon Lee    schedule 06.04.2011
comment
ฉันดูตัวแปร ind debugger และไม่มีมิลลิวินาที ฉันได้รับวันที่จากบริการเว็บเป็นมิลลิวินาที แต่ฉันจัดรูปแบบวันที่นั้นก่อนที่จะจัดเก็บไว้ในวัตถุ วันที่ทั้งสองมีรูปแบบในลักษณะเดียวกัน - person 1110; 06.04.2011
comment
คุณจะได้อะไรถ้าคุณโทร... - (BOOL)isEqualToDate:(NSDate *)anotherDate - person Simon Lee; 06.04.2011
comment
ตกลงสำหรับทั้งค่า (NSTimeInterval) ของ - (NSTimeInterval)timeIntervalSince1970 คืออะไร - person Simon Lee; 06.04.2011
comment
อันนี้มาจากบริการเว็บ 4.9406564584124654e-324 อันนี้มาจากฐานข้อมูล = 1302087523 นี่คือวิธีที่ฉันได้รับ: double s = [existing.LastModifiedOnDate timeIntervalSince1970]; e สองครั้ง = [newFromWebService.LastModifiedOnDate timeIntervalSince1970]; - person 1110; 06.04.2011
comment
ฉันพบวิธีแก้ปัญหาที่นี่ stackoverflow.com/questions/2954668/< /ก> - person 1110; 06.04.2011