代码之家  ›  专栏  ›  技术社区  ›  Moshe

我如何得到基金会的一天?

  •  108
  • Moshe  · 技术社区  · 13 年前

    我怎样才能把一周中的某一天作为一个细绳?

    13 回复  |  直到 6 年前
        1
  •  215
  •   Vladimir    13 年前
    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];
    
        2
  •  18
  •   Pang Mohammad Imran    7 年前

    只需使用这三行:

    CFAbsoluteTime at = CFAbsoluteTimeGetCurrent();
    CFTimeZoneRef tz = CFTimeZoneCopySystem();
    SInt32 WeekdayNumber = CFAbsoluteTimeGetDayOfWeek(at, tz);
    
        3
  •  14
  •   George Steiner    9 年前

    这里的许多答案都被否决了。从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);
    
        4
  •  10
  •   Ashley Mills    7 年前

    以下是您在Swift 3中的操作方法,并获得一个本地化的日名_

    let dayNumber = Calendar.current.component(.weekday, from: Date()) // 1 - 7
    let dayName = DateFormatter().weekdaySymbols[dayNumber - 1]
    
        5
  •  7
  •   Andrew Prock    9 年前
    -(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); 
    }
    
        6
  •  3
  •   neoscribe    7 年前

    我需要一个简单的(公历)星期一索引,其中0=Sunday和6=Saturday用于模式匹配算法。从这里可以简单地从使用索引的数组中查找日名称。以下是我提出的不需要日期格式化程序、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;
    }
    
        7
  •  2
  •   Janmenjaya    8 年前

    这是SWIFT 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())
    
        8
  •  2
  •   Luca Davanzo    7 年前

    我认为这个主题非常有用,所以我发布了一些代码 银行代码: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)
        }
    
    }
    
        9
  •  1
  •   EquiAvia Tech    11 年前

    弗拉基米尔的回答对我来说很有效,但我想我会发布日期格式字符串的Unicode链接。

    http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns

    此链接适用于iOS 6。其他版本的iOS有不同的标准,可以在X代码文档中找到。

        10
  •  1
  •   brainray    9 年前

    这样它就可以在swift中工作:

        let calendar = NSCalendar.currentCalendar()
        let weekday = calendar.component(.CalendarUnitWeekday, fromDate: NSDate())
    

    然后将工作日分配给生成的数字。

        11
  •  0
  •   Mobile Developer    9 年前

    我有一个很奇怪的问题,一周中有一天。仅仅设置第一个工作日是不够的。设定时区也很有必要。我的工作解决方案是:

     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]  ;
    
        12
  •  0
  •   Community Egal    7 年前

    Swift 2:在一行中获取一周中的某一天。( based on neoscribe answer )

    let dayOfWeek  = Int((myDate.timeIntervalSinceReferenceDate / (60.0*60.0*24.0)) % 7)
    let isMonday   = (dayOfWeek == 0)
    let isSunday   = (dayOfWeek == 6)
    
        13
  •  0
  •   Andy.C    7 年前
    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";
    

    我们可以使用三个符号来设置星期几的格式:

    • e
    • e
    • C

    以下两个文件可能对您有所帮助。

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html

    http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns

    演示:

    您可以在此网站上测试您的模式:

    http://nsdateformatter.com/