के लिए सप्ताह के अगले निकटतम विशिष्ट दिन के लिए एनएसडीएटी खोजें मान लीजिए कि आज बुधवार है। मैं को NSDateComponents
में तोड़ सकता हूं, लेकिन मुझे अगले आगामी सोमवार को NSDate
खोजने की आवश्यकता है। अगर आज सोमवार है, तो अगले आगामी सोमवार आज है। इसे हासिल करने का सही तरीका क्या है?किसी भी दिनांक
उत्तर
आप NSCalendar
वस्तु पर nextDateAfterDate:
विधि का उपयोग कर सकते हैं इस लक्ष्य को हासिल करने के लिए,
let now = Date() // today
var matchingComponents = DateComponents()
matchingComponents.weekday = 2 // Monday
let comingMonday = Calendar.current.nextDate(after: now,
matching: matchingComponents,
matchingPolicy:.nextTime)
यहां, अगले सोमवार को खोजने का एक आसान तरीका है। अगर आज सोमवार है तो निम्नलिखित कार्य आज या फिर निकटतम अगले सोमवार को लौटाता है। ध्यान दें कि यह en_POSIX_US का उपयोग करता है जैसे कि दिन मिलान किया जा सकता है। जब वातावरण en_POSIX_US है, काम करने के दिन प्रतीक बन,
["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
और, यहाँ कैसे इस दिन इस्तेमाल किया जा सकता है,
func findNext(_ day: String, afterDate date: Date) -> Date? {
var calendar = Calendar.current
calendar.locale = Locale(identifier: "en_US_POSIX")
let weekDaySymbols = calendar.weekdaySymbols
let indexOfDay = weekDaySymbols.index(of: day)
assert(indexOfDay != nil, "day passed should be one of \(weekDaySymbols), invalid day: \(day)")
let weekDay = indexOfDay! + 1
let components = calendar.component(.weekday, from: date)
if components == weekDay {
return date
}
var matchingComponents = DateComponents()
matchingComponents.weekday = weekDay // Monday
let nextDay = calendar.nextDate(after: date,
matching: matchingComponents,
matchingPolicy:.nextTime)
return nextDay!
}
let nextMonday = findNext("Monday", afterDate: Date())
let mondayAfterThat = findNext("Monday", afterDate: nextMonday!)
let thursday = findNext("Thursday", afterDate: mondayAfterThat!)
के लिए धन्यवाद यह मुझे लगता है कि यह सबसे अच्छा समाधान है :) –
यह आश्चर्यजनक है कि 'एनएससीएंडेंडर' के आईओएस 8 विधियां अभी भी संदर्भ पुस्तकालय पर अनियंत्रित हैं । – Desdenova
हां, ऐसा लगता है कि उन्होंने एनएससीएंडर और भाई बहनों को कई नए एपिस जोड़े हैं। उन्हें दस्तावेज करना वास्तव में अच्छा होगा। – Sandeep
आप NSDateComponents
का उपयोग करके सप्ताह दिन हो और अंतराल दिनों की गणना कर सकते, तो जैसे NSDate
से dateByAddingTimeInterval
का उपयोग करें:
let now = NSDate()
let calendar: NSDateComponents = NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitWeekday, fromDate: now)
let weekday = calendar.weekday // 1 = Sunday, 2 = Monday
// You get input the weekday here and calculate the interval
// exmaple for moving to the next day
let expectedDate = now.dateByAddingTimeInterval(1 * 24 * 60 * 60)
// exmaple for moving to yesterday
let yesterday = now.dateByAddingTimeInterval(-1 * 24 * 60 * 60)
** ** दिन की अवधि के रूप में 24 * 60 * 60 सेकंड का उपयोग न करें (डेलाइट सेविंग टाइम ट्रांज़िशन के बारे में सोचें)। –
@MartinR क्षमा करें। मैं पालन नहीं करता हूं। क्या आप इसे फिर से समझा सकते हैं? –
दिन 23, 24, 25 घंटे लंबे हो सकते हैं, डेलाइट सेविंग टाइम्स – vikingosegundo
आईओएस> = 8 उपयोग GeneratorOfOne के समाधान
अन्यथा आप इस
let now = NSDate()
var lastMonday:NSDate?
var nextMonday:NSDate?
var start:NSDate?
var interval:NSTimeInterval = 0 // holds the length of a week. can differ for Daylight Saving Time
let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! // have a own calendar object for this calculation to guarantee that the next line does not influence other calculations
cal.firstWeekday = 2 // make sure first day of week is Monday.
cal.rangeOfUnit(NSCalendarUnit.CalendarUnitWeekOfMonth, startDate: &lastMonday, interval:&interval, forDate: now) // monday of current week
nextMonday = lastMonday?.dateByAddingTimeInterval(interval) // add a weeks length to the last weeks's monday
println(nextMonday)
- 1. अभी भी दिनांक पिकर
- 2. रेल पिछले किसी भी दिनांक के संबंध में रविवार
- 3. C# किसी भी दिनांक प्रारूप स्ट्रिंग को डेटाटाइम
- 4. मैं किसी विशेष दिनांक
- 5. किसी निश्चित दिनांक
- 6. किसी दिनांक सीमा
- 7. किसी दिए गए दिनांक
- 8. किसी दिए गए दिनांक
- 9. किसी दिए गए दिनांक
- 10. किसी विशेष दिनांक
- 11. नेटबीन: किसी विशेष दिनांक
- 12. किसी भी
- 13. किसी भी()
- 14. किसी भी
- 15. किसी भी शाखा में किसी भी शाखा में मौजूद किसी भी शाखा को सूचीबद्ध करें
- 16. मैं किसी दिनांक को HTTP- स्वरूपित दिनांक में .NET/C#
- 17. .net SqlConnection किसी भी {{
- 18. किसी भी enum
- 19. किसी भी DOM तत्व
- 20. किसी भी व्युत्पन्न वर्ग
- 21. किसी भी उपलब्ध असेंबली
- 22. किसी भी डीबगर
- 23. किसी भी मॉडल
- 24. किसी भी एपीआई
- 25. टाइपप्रति किसी भी वस्तु
- 26. pr_debug किसी भी उत्पादन
- 27. किसी भी स्थिति
- 28. किसी भी लेनदेन
- 29. किसी भी मोनॉयड
- 30. "किसी भी सीपीयू"
का उपयोग कर सकते हैं आप https://github.com/mysterioustrousers/MTDates, और इसमें एक 'mt_startOfNextWeek;' विधि है। –
मुझे किसी तीसरे भाग पुस्तकालयों के बिना समाधान की आवश्यकता है –
क्या आपका अगला * आगामी * सोमवार, या सिर्फ * निकटतम * (जो अतीत में या भविष्य में हो सकता है) का मतलब है? –