Wie könnte die Tagesnummer des Jahres mit swift gefunden werden? Gibt es einen einfachen Weg, den ich nicht sehen kann, oder muss ich die Anzahl der Sekunden vom 1. Januar bis zum aktuellen Datum finden und durch die Anzahl der Sekunden an einem Tag dividieren?NSDate Tag des Jahres (swift)
Antwort
Dies ist eine Übersetzung der Antwort auf How do you calculate the day of the year for a specific date in Objective-C? zu Swift: Sie tun, um Ihre Kalenderberechnungen wie folgt zu helfen, alles, was Sie tun müssen, ist NSCalendar zu verwenden.
Swift 2:
let date = NSDate() // now
let cal = NSCalendar.currentCalendar()
let day = cal.ordinalityOfUnit(.Day, inUnit: .Year, forDate: date)
print(day)
Swift 3:
let date = Date() // now
let cal = Calendar.current
let day = cal.ordinality(of: .day, in: .year, for: date)
print(day)
Dies gibt 1
für den ersten Tag im Jahr, und 56 = 31 + 25
für heute (25. Februar).
... or do I have to find the number of seconds from Jan 1 to the current date and divide by the number of seconds in a day
Dies wäre ein falscher Ansatz, denn ein Tag keine feste Anzahl von Sekunden (Übergang von oder zu Sommerzeit) hat.
Überhaupt nicht !!!
let firstDayOfTheYear = NSCalendar.currentCalendar().dateWithEra(1, year: NSCalendar.currentCalendar().component(.CalendarUnitYear, fromDate: NSDate()), month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 0)! // "Jan 1, 2015, 12:00 AM"
let daysFromJanFirst = NSCalendar.currentCalendar().components(.CalendarUnitDay, fromDate: firstDayOfTheYear, toDate: NSDate(), options: nil).day // 55
let secondsFromJanFirst = NSCalendar.currentCalendar().components(.CalendarUnitSecond, fromDate: firstDayOfTheYear, toDate: NSDate(), options: nil).second // 4,770,357
Dies funktioniert auch. –
Sie können die Anzahl der Tage seit dem Sie das Datum wie diese finden:
let date = NSDate() // your date
let days = cal.ordinalityOfUnit(.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: date)
println(days)
Was ist 'cal' hier? – DarkDust
Es ist Objekt von NSCalendar –
@KananVora, als Sie Objekt in Code hinzufügen sollten –
Swift 3
extension Date {
var dayOfYear: Int {
return Calendar.current.ordinality(of: .day, in: .year, for: self)!
}
}
Verwendung wie
Date().dayOfYear
- 1. NSDate vom Tag des Jahres bekommen
- 2. erhalten Woche des Jahres vom Tag des Jahres
- 3. Erster Tag des laufenden Jahres
- 4. Wie NSArray in NSDictionary von NSDate des Array-Objekts Tag des Jahres aufzuteilen?
- 5. Heute ist n-ten Tag des Jahres
- 6. Android: Datum mit Tag des Jahres Nummer
- 7. NSDate für den ersten Tag des Monats
- 8. Woche des Jahres
- 9. Wie man Tag, Monat und Stunde von NSDate in Swift
- 10. Swift: Wie bekomme ich Wochentag von nsdate
- 11. Wie bekomme ich den ersten Tag des laufenden Jahres?
- 12. Erster Tag des nächsten Jahres für SQL Server?
- 13. Wie bekomme ich den Tag des Jahres in Crystal Reports?
- 14. Python Frage: Jahr und Tag des Jahres bis heute?
- 15. Wie bekomme ich das Datum vom Tag des Jahres
- 16. Wie bekommt man den Tag des Jahres in Rubin?
- 17. Erhalten Sie den ersten Tag des aktuellen Jahres mit Moment.js
- 18. Wie finde ich den aktuellen Tag des Jahres in PHP?
- 19. Wie ersten Tag des laufenden Jahres in Javascript zu bekommen?
- 20. Array des aktuellen Jahres und des letzten Jahres erstellen Eckig
- 21. Android Monate des Jahres
- 22. Finden Sie den gleichen Tag des vorherigen Jahres durch das Datum des aktuellen Jahres in SQL Server
- 23. Problem mit Swift NSDate "timeIntervalSinceNow"
- 24. Wie NSDate in Swift verspotten?
- 25. NSDate außerhalb des Geltungsbereichs
- 26. Wie bekomme ich den ersten Tag und den letzten Tag des laufenden Jahres in C#
- 27. CURRENT_DATE Abrufen des Monats und des Jahres
- 28. Suche letzte Woche des Jahres mit java.time
- 29. Beginnen Sie den ersten Tag der Woche des Jahres am Sonntag und Ende letzter Tag der Woche des Jahres am Samstag
- 30. NSSortDescriptor-Sortierung mit NSDate in Swift
Warum gibt Ihre Methode 56 mine 55 zurück? –
@LeonardoSavioDabus: Siehe aktualisierte Antwort: Diese Methode gibt 1 für den ersten Tag des Jahres zurück. –
NSCalendar.currentCalendar(). OrdinalityOfUnit (.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: NSDate()) –