NSDateComponents öğelerini tek bir NSDate'e nasıl alabilirim? 2 tarih arasındaki farkın bileşenlerini istemiyorum, sadece NSDate'in saniye, dakika, saat, gün, ay ve yılı? Bir buluşmamız bileşenleri Alma :Bir NSDate öğesinin NSDateComponents'ları
21
A
cevap
38
3 Listeleme, Apple docs örnek bir var Mecbur 'veya' o
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =
[gregorian components:(NSDayCalendarUnit |
NSWeekdayCalendarUnit) fromDate:today];
NSInteger day = [weekdayComponents day];
NSInteger weekday = [weekdayComponents weekday];
Not birlikte calendar units sen components
yöntemin çağrısında istiyorum. NSCalendar yöntemini kullanarak
6
:
- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date
gibi: Swift içinde
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDate *date = [NSDate date];
NSCalendar * cal = [NSCalendar currentCalendar];
NSDateComponents *comps = [cal components:unitFlags fromDate:date];
0
istediğiniz bileşenleri böyle geçirilir 2.x.
let gregorianCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let weekdayHourMinutes = gregorianCalendar?.components([.Weekday, .Hour, .Minute], fromDate: date)
2
Elma Geliştirici API Başvurusu göre, DateComponents
second
, minute
, hour
, day
, month
, year
örnek özelliklere sahiptir.
aşağıdaki Swift 3 Bahçesi kodu DateComponents
kullanarak Date
örneğinden saniye, dakika, saat, gün, ay ve yıl bileşenleri nasıl gösterir:
import Foundation
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(abbreviation: "CET")!
let date = Date()
// Get seconds, minutes, hours, day, month and year
let components = calendar.dateComponents([.second, .minute, .hour, .day, .month, .year], from: date)
let seconds = components.second
let minutes = components.minute
let hours = components.hour
let day = components.day
let month = components.month
let year = components.year
// Print components
print(String(reflecting: seconds)) // prints Optional(33)
print(String(reflecting: minutes)) // prints Optional(42)
print(String(reflecting: hours)) // prints Optional(22)
print(String(reflecting: day)) // prints Optional(17)
print(String(reflecting: month)) // prints Optional(12)
print(String(reflecting: year)) // prints Optional(2016)
/* ... */
// Set a formatter in order to display date
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .long
formatter.timeZone = TimeZone(abbreviation: "CET")
formatter.locale = Locale(identifier: "fr_FR")
print(formatter.string(from: date)) // prints 17/12/2016 22:42:33 UTC+1
ha, beni dövmek! +1 –
@martin clayton, Merhaba, NSDateComponents için belirli bir zaman, saat ve saniye belirledim ve şimdi tekrar NSDateComponents'larla tarihi oluşturmak istiyorum. Bunu nasıl yapabilirim? –