जवाबों:
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"EEEE"];
NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);
वर्तमान क्षेत्रीय सेटिंग्स पर निर्भर लोकेल में एक स्ट्रिंग के रूप में सप्ताह के वर्तमान दिन को आउटपुट करता है।
केवल एक सप्ताह के दिन की संख्या प्राप्त करने के लिए आपको NSCalendar वर्ग का उपयोग करना होगा:
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *comps = [gregorian components:NSWeekdayCalendarUnit fromDate:[NSDate date]];
int weekday = [comps weekday];
बस इन तीन लाइनों का उपयोग करें:
CFAbsoluteTime at = CFAbsoluteTimeGetCurrent();
CFTimeZoneRef tz = CFTimeZoneCopySystem();
SInt32 WeekdayNumber = CFAbsoluteTimeGetDayOfWeek(at, tz);
यहाँ बहुत से उत्तर हटाए गए हैं। यह iOS 8.4 के रूप में काम करता है और आपको सप्ताह के दिन को एक स्ट्रिंग के रूप में और एक नंबर के रूप में देता है।
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE"];
NSLog(@"The day of the week: %@", [dateFormatter stringFromDate:[NSDate date]]);
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *comps = [gregorian components:NSCalendarUnitWeekday fromDate:[NSDate date]];
int weekday = [comps weekday];
NSLog(@"The week day number: %d", weekday);
weekday
घटक NSCalendar
एक है NSInteger
, इसलिए आपको जरूरत पड़ने पर कास्ट [comps weekday]
करने की int
आवश्यकता होगी, या अन्यथा यह इस बारे में चेतावनी दिखाएगा।
यहाँ आप इसे स्विफ्ट 3 में कैसे करते हैं, और एक स्थानीय दिन का नाम प्राप्त करें ...
let dayNumber = Calendar.current.component(.weekday, from: Date()) // 1 - 7
let dayName = DateFormatter().weekdaySymbols[dayNumber - 1]
-(void)getdate {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init] ;
[dateFormatter setDateFormat:@"EEEE"];
NSDate *now = [[NSDate alloc] init];
NSString *dateString = [format stringFromDate:now];
NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];
NSString *week = [dateFormatter stringFromDate:now];
NSLog(@"\n"
"theDate: |%@| \n"
"theTime: |%@| \n"
"Now: |%@| \n"
"Week: |%@| \n"
, theDate, theTime,dateString,week);
}
मुझे सप्ताह के सूचकांक के एक सरल (ग्रेगोरियन) दिन की आवश्यकता थी, जहां पैटर्न मैच एल्गोरिदम में 0 = रविवार और 6 = शनिवार का उपयोग किया जाना था। वहां से सूचकांक का उपयोग करके एक सरणी से दिन के नाम को देखने का एक सरल मामला है। यहाँ मैं तारीख सूत्रकारों, या NSCalendar या दिनांक घटक हेरफेर की आवश्यकता नहीं है के साथ आया है:
+(long)dayOfWeek:(NSDate *)anyDate {
//calculate number of days since reference date jan 1, 01
NSTimeInterval utcoffset = [[NSTimeZone localTimeZone] secondsFromGMT];
NSTimeInterval interval = ([anyDate timeIntervalSinceReferenceDate]+utcoffset)/(60.0*60.0*24.0);
//mod 7 the number of days to identify day index
long dayix=((long)interval+8) % 7;
return dayix;
}
यहां स्विफ्ट 3 के लिए अपडेटेड कोड है
कोड:
let calendar = Calendar(identifier: .gregorian)
let weekdayAsInteger = calendar.component(.weekday, from: Date())
स्ट्रिंग के रूप में घटना का नाम प्रिंट करने के लिए:
let dateFromat = DateFormatter()
datFormat.dateFormat = "EEEE"
let name = datFormat.string(from: Date())
मुझे लगता है कि यह विषय वास्तव में उपयोगी है, इसलिए मैं कुछ कोड स्विफ्ट 2.1 संगत पोस्ट करता हूं ।
extension NSDate {
static func getBeautyToday() -> String {
let now = NSDate()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "EEEE',' dd MMMM"
return dateFormatter.stringFromDate(now)
}
}
कहीं भी आप कॉल कर सकते हैं:
let today = NSDate.getBeautyToday()
print(today) ---> "Monday, 14 December"
स्विफ्ट 3.0
जैसा कि @ delta2flat ने सुझाव दिया है, मैं उपयोगकर्ता को कस्टम प्रारूप निर्दिष्ट करने की क्षमता देने वाले उत्तर को अपडेट करता हूं।
extension NSDate {
static func getBeautyToday(format: String = "EEEE',' dd MMMM") -> String {
let now = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: now)
}
}
व्लादिमीर के जवाब ने मेरे लिए अच्छा काम किया, लेकिन मुझे लगा कि मैं तारीख प्रारूप के तार के लिए यूनिकोड लिंक पोस्ट करूंगा।
http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns
यह लिंक आईओएस 6 के लिए है। आईओएस के अन्य संस्करणों में अलग-अलग मानक हैं जो एक्स-कोड प्रलेखन में पाए जा सकते हैं।
इस तरह यह स्विफ्ट में काम करता है:
let calendar = NSCalendar.currentCalendar()
let weekday = calendar.component(.CalendarUnitWeekday, fromDate: NSDate())
फिर कार्यदिवस को परिणामी संख्याओं को निर्दिष्ट करें।
सप्ताह का एक दिन प्राप्त करने के साथ मेरे पास काफी अजीब मुद्दा था। केवल पहले दिन की सेटिंग ही पर्याप्त नहीं थी। टाइम ज़ोन सेट करने के लिए यह भी necesarry था। मेरा कार्य समाधान था:
NSCalendar* cal = [NSCalendar currentCalendar];
[cal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[cal setFirstWeekday:1]; //Sunday
NSDateComponents* comp = [cal components:( NSWeekOfMonthCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit) fromDate:date];
return [comp weekday] ;
स्विफ्ट 2: सप्ताह का दिन एक लाइन में प्राप्त करें। ( नवशास्त्र उत्तर पर आधारित )
let dayOfWeek = Int((myDate.timeIntervalSinceReferenceDate / (60.0*60.0*24.0)) % 7)
let isMonday = (dayOfWeek == 0)
let isSunday = (dayOfWeek == 6)
self.dateTimeFormatter = [[NSDateFormatter alloc] init];
self.dateTimeFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; // your timezone
self.dateTimeFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"zh_CN"]; // your locale
self.dateTimeFormatter.dateFormat = @"ccc MM-dd mm:ss";
सप्ताह के दिन को प्रारूपित करने के लिए हम तीन प्रतीकों का उपयोग कर सकते हैं:
निम्नलिखित दो दस्तावेज़ आपकी मदद कर सकते हैं।
http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns
डेमो:
आप इस वेबसाइट पर अपने पैटर्न का परीक्षण कर सकते हैं:
[dateFormatter weekdaySymbols]
(और इसी तरह के), जो