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?
7
A
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
Eğer 'NSDateFormatter' ile deneyin miydi? ve 'dateFromString' kullanın – Lee
https://gist.github.com/anishparajuli555/ee678fe3e3be39a31aba Bu kılavuz sizin yardımınıza olabilir –
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