NSDate için minimum ve maksimum olası değerlerin ne olduğunu bilen var mı?NSDate Min ve Maksimum Muhtemel Değerler
cevap
maksimum olmalıdır: 5828963-12-20 00:00:00 +0000
NSDate *dateSinceNow = [NSDate dateWithTimeIntervalSinceNow:DBL_MAX];
NSDate *dateSindeReferenceDate = [NSDate dateWithTimeIntervalSinceReferenceDate:DBL_MAX];
NSLog(@"min: %@, max: %@", dateSinceNow, dateSindeReferenceDate);
çünkü aynıdır. i çalıştığınızda bu 0001-01-01 00:00:00 +0000
nedeni i elde ediyoruz: i bu olsun
minimum
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
[df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *myDate = [df dateFromString: @"0001-01-01 00:00:00"];
NSLog(@"%@", myDate);
ama bu sivri gibi güncel dönemdir
tarafından dışarı çıkıldığında, ilk örneği - DBL_MAX ile denerseniz, 41221-07--2147483641 00:00:00 +0000 elde edersiniz. Bunun ne çağ hiçbir fikri ...
Bu soruyu sormamı sağlayan aynı sorunu yaşadığınızı düşünüyorum. En düşük tarih değerinin 0001-01-01 00:00:00 olduğunu düşünüyorum, ancak NSDateFormatter'ı kullandığınızda tarihiniz saat diliminiz tarafından çarpıtılıyor. Aşağıdaki ile tekrar deneyin: [df setTimeZone: [NSTimeZone timeZoneForSecondsFromGMT: 0]]. –
ayar zaman dilimi bana 0001-01-01 00:00:00 +0000 verir – peko
Bu sadece yarı doğrudur. Maksimum bit doğrudur, ancak minimum için mantığınız hatalı. Mevcut dönem * için bu en düşük * (CE). NSDate, BCE tarihlerini mükemmel bir şekilde ifade edebiliyor. Ne aradığınız '' NSDate dateWithTimeIntervalSince1970: -DBL_MAX] ' –
DÜZENLENECEK Cevap:
ben Açıklamalarda belirttiği edildiği gibi asgari tarih değeri (aşağıda benim kod verilmiş) ANCAK 0001-01-01 00:00:00 + 0000
oldu bulduklarını düşündüm Aşağıda, bu sadece akım dönemi (örn. AD) içindir. Bir NSDate değeri bundan daha düşük olabilir, ancak bir NSLog sonucunda gördüğünüz şey beklediğiniz şey olmayabilir, bu yüzden burada diğer cevaplara bakmanızı ve cehaletimi görmezden gelmenizi tavsiye ederim.
ORİJİNAL Cevap:
Ben asgari tarih değerini fark ettik inanıyoruz NSLog'ing ve ayrıştırma değerleri sağlamak için çok dikkatli olmak gerekir 0001-01-01 00:00:00 + 0000
olduğunu saat dilimi değil mi' t Tarih değerini hafifçe değiştirerek. Ek bir 100 saniye çıkarılarak
date1 = 0001-01-01 00:00:00 +0000
date1 via dateFormatter1 = 0001-12-31 11:58:45 GMT-00:01:15
date1 via dateFormatter2 = 0001-12-31 23:58:45 GMT-00:01:15
date1 via dateFormatter3 = 0001-01-01 00:00:00 GMT
date2 = 0001-12-31 23:58:20 +0000
date2 via dateFormatter1 = 0001-12-31 11:57:05 GMT-00:01:15
date2 via dateFormatter2 = 0001-12-31 23:57:05 GMT-00:01:15
date2 via dateFormatter3 = 0001-12-31 23:58:20 GMT
Not DATE2 ve nasıl:
denemek ve aşağıda gösterecektir:
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDateFormatter *dateFormatter3 = [[NSDateFormatter alloc] init];
[dateFormatter3 setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
[dateFormatter3 setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date1 = [NSDate dateWithTimeIntervalSince1970:-62135596800];
NSLog(@"date1 = %@", date1);
NSLog(@"date1 via dateFormatter1 = %@", [dateFormatter1 stringFromDate:date1]);
NSLog(@"date1 via dateFormatter2 = %@", [dateFormatter2 stringFromDate:date1]);
NSLog(@"date1 via dateFormatter3 = %@", [dateFormatter3 stringFromDate:date1]);
NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:-62135596800 - 100]; // The - 100 makes no difference
NSLog(@"date2 = %@", date2);
NSLog(@"date2 via dateFormatter1 = %@", [dateFormatter1 stringFromDate:date2]);
NSLog(@"date2 via dateFormatter2 = %@", [dateFormatter2 stringFromDate:date2]);
NSLog(@"date2 via dateFormatter3 = %@", [dateFormatter3 stringFromDate:date2]);
Bu (kendi özel zaman dilimi verilen my iPad) Aşağıdaki çıktıda sonuçlar tarihin değerini azaltmadı, ancak aslında onu arttırmış görünüyordu. Açıkçası NSDate'in iç çalışmalarının kendine özgü bir özelliği var, zaman 100 saniyeye göre ayarlanıyor, ama bu belki de gündüz ve ayı çarpıyor belki de daha düşük olamazdı.
Eğer [NSDate dateWithTimeIntervalSinceNow: - DBL_MAX] 41221-07--2147483641 00:00:00 +0000 .. – peko
-1 yanlış bir şey olsun. Bu, mevcut dönem için sadece minimum tarih değil, genel minimum tarih değildir. –
İşaretçi için teşekkürler, cevabımı güncelledim. Tarihler aklımı ve NSDateFormatter gerçekten önemli değil yardımcı olur. –
[NSDate distantFuture] ve [NSDate distantPast]'u kullanın.
- 1. Google Haritaları'nda maksimum ve minimum değerler
- 2. giriş türü tarih min ve maksimum değerler, dd-mm-yyyy yerine yyyy-aa-gg'ye karşı geçerli
- 3. RemoteInput'te min ve/veya maksimum uzunluk nasıl belirlenir
- 4. Min ve maksimum sürüm aralığı ile bir paket nasıl kurulur?
- 5. İkili arama ağaçları Maksimum ve Min Yükseklik düğüm sayısına göre
- 6. NSDate, başka bir NSDate
- 7. 2d dizisinin her sütununda maksimum ve minimum değerler bulma Java
- 8. android ivmeölçer min ve max aralığı
- 9. sqlalchemy: Bir tablodan maksimum/dk/ortalama değerler elde
- 10. awk: maksimum değerleri ve
- 11. Bir NSDate öğesinin [NSDate date] ile karşılaştırılması
- 12. NSDate: Time
- 13. [NSDate tarih]
- 14. bir NSDate
- 15. Güçlü muhtemel primellerin primalliğini kanıtlama
- 16. Başlatma NSDate
- 17. Muhtemel durum geçişleri nasıl yazılır?
- 18. CSS özgüllüğü, Ortam Sorguları ve min-genişlik
- 19. Her üye için min() & saniye min() bulma
- 20. Dart Listesi min/max değeri
- 21. SWIFT NSTimeInteval'i NSDate dönüştürün
- 22. Bir NSDate öğesinin NSDateComponents'ları
- 23. Swift'de NSDate nasıl oynanır?
- 24. Bir fonksiyonun minimum ve maksimum değerleri bul
- 25. En Kolay Muhtemel Performans Sayacı Örneği
- 26. NSDate yuvarlamadan saniyeyi sıfırlama
- 27. NSDate substract bir ay
- 28. İki NSDate nesneleri
- 29. NSDate NSString nasıl dönüştürülür?
- 30. Min/Max ve en sık kullanılan elemanlar listesi
Lütfen bunu bilmeniz gereken senaryoda açıklayınız. –
Bunun için ne gerekiyor ??? – Melbourne
===> WWDC 2011 Video "Oturum 117 - Takvim Hesaplamaları Gerçekleştirme" (59:11) –