Số ngày trong năm có thể được tìm thấy nhanh như thế nào? Có cách nào đơn giản mà tôi không nhìn thấy hay tôi phải tìm số giây từ ngày 1 tháng 1 đến ngày hiện tại và chia cho số giây trong một ngày?Ngày NSDate trong năm (nhanh)
Trả lời
Đây là bản dịch của câu trả lời cho 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)
Điều này cho phép 1
cho ngày đầu tiên trong năm, và 56 = 31 + 25
cho ngày hôm nay (ngày 25 tháng 2).
... 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
Đây sẽ là một cách tiếp cận sai, bởi vì một ngày không có một cố định số giây (chuyển đổi từ hoặc Daylight Saving Time).
Không hề !!! Tất cả bạn phải làm là sử dụng NSCalendar để giúp bạn làm các phép tính lịch của bạn như sau:
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
này hoạt động là tốt. –
Bạn có thể tìm ra số ngày kể từ ngày bạn như thế này:
let date = NSDate() // your date
let days = cal.ordinalityOfUnit(.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: date)
println(days)
Có gì 'cal' ở đây? – DarkDust
Đó là đối tượng của NSCalendar –
@KananVora hơn là bạn nên thêm đối tượng vào mã –
Swift 3
extension Date {
var dayOfYear: Int {
return Calendar.current.ordinality(of: .day, in: .year, for: self)!
}
}
sử dụng như
Date().dayOfYear
- 1. Thay đổi năm, tháng và ngày của đối tượng NSDate
- 2. Tên ngày từ NSDate?
- 3. ngày Thêm vào NSDate
- 4. Http ngày để NSDate
- 5. NSDate - Đặt một ngày trong tương lai
- 6. NSDate, so sánh hai ngày
- 7. NSDate của ngày hôm qua
- 8. Định dạng ngày giờ Ngày trong năm
- 9. Ngày giữa các ngày, bỏ qua năm
- 10. Django: Nhóm theo ngày (ngày, tháng, năm)
- 11. Trả lại NSDate "1604" cho giá trị năm?
- 12. Định dạng ngày trong ngày, ngày tháng, năm
- 13. Cho năm, tháng và ngày, tất cả trong int, làm thế nào tôi sẽ tạo ra một NSDate
- 14. Chuyển đổi năm và ngày trong năm thành chỉ số ngày giờ trong gấu trúc
- 15. Nhận ngày giờ từ năm, ngày trong năm và giờ trong SQL Server 2008 R2
- 16. NSDate cho ngày đầu tiên của tháng
- 17. ngày Đếm mỗi năm
- 18. Ngày trừ 1 năm?
- 19. Tính năm từ ngày
- 20. Làm cách nào để nhận NSDate vào 00:00 vào ngày [NSDate date]?
- 21. NSDate - Chuyển đổi ngày thành GMT
- 22. Bắt ngày từ [NSDate ngày] ra bởi một vài giờ
- 23. javascript tạo ngày từ năm, tháng, ngày
- 24. Thêm năm vào ngày đến ngày
- 25. NSPredicate: lọc đối tượng theo ngày thuộc tính NSDate
- 26. Định dạng NSDate với Tên Tháng/Ngày viết tắt
- 27. Ngày Julian của năm trong Java
- 28. Cập nhật ngày + một năm trong mysql
- 29. Nhận chi tiết ngày (ngày, tháng, năm) trong GWT
- 30. Tạo ngày giờ trong Rails bằng tháng, ngày và năm
tại sao phương pháp của bạn trả về 56 mỏ 55? –
@LeonardoSavioDabus: Xem câu trả lời được cập nhật: Phương thức này trả về 1 cho ngày đầu tiên trong năm. –
NSCalendar.currentCalendar(). OrdinalityOfUnit (.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: NSDate()) –