Jak można szybko znaleźć numer dnia w roku? Czy istnieje prosty sposób, którego nie widzę, czy muszę znaleźć liczbę sekund od 1 stycznia do bieżącej daty i podzielić przez liczbę sekund w ciągu dnia?NSDate dzień roku (swift)
Odpowiedz
Jest to tłumaczenie z odpowiedzią na How do you calculate the day of the year for a specific date in Objective-C? Swift.
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)
Daje 1
na pierwszy dzień w roku, a 56 = 31 + 25
na dzisiaj (25 lutego).
... 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
Byłby to błędne podejście, gdyż dzień nie mają stałego liczbę sekund (przejście z lub do czasu letniego).
Wcale nie !!! Wszystko co musisz zrobić, to użyć NSCalendar pomogą Ci zrobić swoje obliczenia kalendarzowe następujące:
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
Działa to również. –
można znaleźć liczbę dni od daty swojej tak:
let date = NSDate() // your date
let days = cal.ordinalityOfUnit(.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: date)
println(days)
Co to jest 'cal' tutaj? – DarkDust
Jest to obiekt NSCalendar –
@KananVora niż powinieneś dodać obiekt w kodzie –
Swift 3
extension Date {
var dayOfYear: Int {
return Calendar.current.ordinality(of: .day, in: .year, for: self)!
}
}
wykorzystanie takich jak
Date().dayOfYear
- 1. Format daty Dzień roku
- 2. Pierwszy dzień bieżącego roku
- 3. Dzień juliański roku w Javie
- 4. NSDate w pełnym stylu, ale bez roku
- 5. NSDate zwraca "1604" za wartość roku?
- 6. NSDate: Dodaj dzień na podstawie czasu
- 7. Jak zdobyć pierwszy dzień bieżącego roku?
- 8. jak zdobyć dzień w roku w powłoce?
- 9. Dzisiaj jest n-ty dzień roku
- 10. NSDate - rok temu, dylemat
- 11. Konwersja NSDate na ciąg w iOS Swift
- 12. Przypisywanie [NSDate date] do NSString w Swift
- 13. Swift i ObjectMapper: NSDate z wartością minimalną
- 14. Tworzenie przyszłą datę w Swift z NSDate()
- 15. Konwersja String do NSDate z Swift 2
- 16. Swift: Drukowanie wszystkich dat pomiędzy dwoma NSDate()
- 17. Swift - dzień tygodnia od bieżącej lokalizacji przez currentCalendar()
- 18. Jak przekonwertować datę POSIX na dzień roku w R?
- 19. Znajdź dzień roku z pakietem lubridate w R
- 20. Jak uzyskać pierwszy dzień i ostatni dzień bieżącego roku w C#
- 21. NSDateComponents of NSDate
- 22. Pobierz LocalDateTime na podstawie roku i tygodnia roku
- 23. Porównywanie NSDate do [data NSDate]
- 24. Jak otrzymać NSDate na 00:00 w dniu [data NSDate]?
- 25. NSDate dla pierwszego dnia miesiąca
- 26. Jak przekonwertować ciąg daty UTC na NSDate w Swift
- 27. Próbujesz przekonwertować sygnaturę czasową Firebase na NSDate w Swift
- 28. Jak przekonwertować uniksowy znacznik czasu na obiekt Swift NSDate?
- 29. Swift - Jak sprawdzić, czy NSDate jest wczoraj w porównaniu do bieżącego czasu?
- 30. Biorąc pod uwagę rok, miesiąc i dzień, wszystko w int, w jaki sposób wygenerować NSDate
dlaczego Twoja metoda zwraca 56 kopalni 55? –
@LeonardoSavioDabus: Zobacz zaktualizowaną odpowiedź: ta metoda zwraca 1 dla pierwszego dnia w roku. –
NSCalendar.currentCalendar(). OrdinalityOfUnit (.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: NSDate()) –