2016-03-17 10 views
7

Geçerli tarih ve saati almak için Date() oluşturursam, bundan sonra yeni bir tarih oluşturmak istiyorum ancak farklı saat, dakika ve sıfır saniye ile, Swift kullanarak bunu yapmanın en kolay yolu nedir? 'Alıyorum' değil, 'ayar' ile pek çok örnek buluyorum.Swift'de günün hangi saatlerinde ve saatlerinde nasıl değiştirilir?

+0

Eğer 'NSDateFormatter' ile deneyin miydi? ve 'dateFromString' kullanın – Lee

+0

https://gist.github.com/anishparajuli555/ee678fe3e3be39a31aba Bu kılavuz sizin yardımınıza olabilir –

+0

Bu cevabın tekrar dizine ve dönüşüme dönüştürmekten daha iyi olduğunu düşünüyorum. Bu yüzden sorumu "en kolay yol" diye sordum. Bunu yapmanın birkaç yolu olduğunu biliyorum ama bileşenleri kullanmanın en iyi olduğunu düşünüyorum. – u84six

cevap

29

Kullanım NSDateComponents:

Swift 3:

let gregorian = Calendar(identifier: .gregorian) 
let now = Date() 
var components = gregorian.dateComponents([.year, .month, .day, .hour, .minute, .second], from: now) 

// Change the time to 9:30:00 in your locale 
components.hour = 9 
components.minute = 30 
components.second = 0 

let date = gregorian.date(from: components)! 

Swift 2: print(date) çağırırsanız, baskılı saat UTC olduğunu

let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
let now = NSDate() 
let components = gregorian.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: now) 

// Change the time to 9:30:00 in your locale 
components.hour = 9 
components.minute = 30 
components.second = 0 

let date = gregorian.dateFromComponents(components)! 

Not. Aynı zaman diliminde, sadece sizinkilerden farklı bir saat dilimi ile ifade edilir. Yerel saatinize dönüştürmek için NSDateFormatter kullanın. saat dilimiyle

13

hızlı 3 tarihi uzatma

extension Date { 
    public func setTime(hour: Int, min: Int, sec: Int, timeZoneAbbrev: String = "UTC") -> Date? { 
     let x: Set<Calendar.Component> = [.year, .month, .day, .hour, .minute, .second] 
     let cal = Calendar.current 
     var components = cal.dateComponents(x, from: self) 

     components.timeZone = TimeZone(abbreviation: timeZoneAbbrev) 
     components.hour = hour 
     components.minute = min 
     components.second = sec 

     return cal.date(from: components) 
    } 
} 
+1

Sanırım bileşenlere '.timeZone 'eklemelisiniz – Daniel