2016-03-30 9 views
2

ile yarının tarihini alın/gg/yyBu format M bugünün tarihini verir bu kodu var Swift 2

let dateFormater = NSDateFormatter() 
      dateFormater.dateFormat = "M/dd/yy" 
      let todayDate = dateFormater.stringFromDate(NSDate()) 

nasıl lütfen aynı şey olsun ama ertesi günün tarihiyle olabilir?

+1

Bkz. Http://stackoverflow.com/questions/12681989/ios-and-finding-tomorrow – Wain

+0

Sormadan önce önce arama yaptınız mı? – Darko

+0

http://stackoverflow.com/a/29487984/2664531 – Darko

cevap

2

Bu biraz karmaşık, ama yine de bilmeniz gereken her şey.

Neden bu kadar zor: NSDate'i (timeIntervalSinceNow: 24 * 60 * 60) alabileceğinizi düşünebilirsiniz. Ancak gün ışığından yararlanma saatini açtığınızda, iki gün sonra saat 23:30 artı 24 saat 00:30. Gün ışığından yararlanma saati kapatıldığında, aynı gün saat 00:30 artı 24 saat 11:30 olabilir.

Bu nedenle bir NSCalendar nesnesi oluşturmanız, NSDate() öğesini bileşenlere dönüştürmeniz, bileşenlere bir gün eklemeniz, bir NSDate'e dönmeniz gerekir (tüm özel durumları ele alarak, bir sonraki gün aynı zamanı verir) ve sonra şimdi yaptığınız gibi sonucu biçimlendirin.

+0

Bu yanıt daha fazla öneride bulunulmalıdır - (örneğin) 32'ye bir dateComponent ayarladıysanız, sistemin bir sonraki güne ilerlemesine ve bu tür bir işlemi yaparken son derece yararlı olan 8 saatini kullanacağına dikkat edin. – woody121

-2

Sonunda bunu düzeltmek için bu kodu kullandı: (şimdi yarın dan bir gün) dateFormater = NSDateFormatter let()

dateFormater.dateFormat = "M/dd/yy" 
let todayDate = dateFormater.stringFromDate(NSDate().dateByAddingTimeInterval(24 * 60 * 60)) 
+0

gnaher729'un yanıtladığı gibi, bu yöntemde önemli sorunlar var. – ColGraff

11

İlk olarak, bu örnekte, ihtiyacınız gün için bir NSDate olsun :

var oneDayfromNow: NSDate { 
    return NSCalendar.currentCalendar().dateByAddingUnit(.Day, 
    value: 1, toDate: NSDate(), options: [])! 
} 

print(oneDayfromNow) 

Sonra dize olarak biçimine dönüştürmek (davanız M/gg/yy):

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "M/dd/yy" 
let str = dateFormatter.stringFromDate(oneDayfromNow) 
print(str) 
+1

+1, Sadece Swift 3 'için FYI bunu kullanabilirsiniz: ' '' takvimine izin ver = NSCalendar (calendarIdentifier: NSCalendar.Identifier.gregorian)! let day = calendar.date (ekleme: .day, değer: 1, to: NSDate() Tarih olarak, seçenekler: [])! '' ' –