簡體   English   中英

Obj-C - 在 word 與 int 中獲取 NSDate 月份組件?

[英]Obj-C - Get NSDate month component in word vs int?

我使用下面的代碼來獲取我的 NSDate 的組件,它返回以下數據:

 "<NSDateComponents: 0x282564be0> {\n    Calendar Year: 2020\n    Month: 10\n    Leap Month: 0\n    Day: 1",
    "<NSDateComponents: 0x282561120> {\n    Calendar Year: 2020\n    Month: 10\n    Leap Month: 0\n    Day: 2",
    "<NSDateComponents: 0x282561180> {\n    Calendar Year: 2020\n    Month: 10\n    Leap Month: 0\n    Day: 3",
    "<NSDateComponents: 0x2825611a0> {\n    Calendar Year: 2020\n    Month: 10\n    Leap Month: 0\n    Day: 4",
    "<NSDateComponents: 0x282564bd0> {\n    Calendar Year: 2020\n    Month: 10\n    Leap Month: 0\n    Day: 5",
    "<NSDateComponents: 0x282561310> {\n    Calendar Year: 2020\n    Month: 10\n    Leap Month: 0\n    Day: 6",
    "<NSDateComponents: 0x282561530> {\n    Calendar Year: 2020\n    Month: 10\n    Leap Month: 0\n    Day: 7"

是否可以將“月份”對象作為三個字母的月份而不是實際月份數返回? 例如。 將十月返回為“十月”而不是 10? 我可以將 dateformatter 放在返回到我的數組的日期上,但我不確定如何將其應用於組件?

視圖控制器.m

       NSDate *today = [NSDate date];
       NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
       NSCalendar *calendar = [NSCalendar currentCalendar];
   
       dateFormatter.dateFormat = @"ddMMM";
       for (UInt16 i = 0; i < 7; i++) {
         
           NSDate *nextDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:i toDate:today options: 0];
       
           [_weekdates addObject:[dateFormatter stringFromDate: nextDate]];
           
           NSDateComponents* components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:nextDate]; // Get necessary date components
           
           [components month];

           NSLog(@"%@", components); 

}

[dateFormatter shortMonthSymbols]這將返回短月份的數組,如Jan,Feb,Mar....使用它你會得到月份的三個字母。

NSLog(@"%@", [dateFormatter shortMonthSymbols][components.month-1]);

[components.month]返回從 1 到 12 的月份數。

- (NSString *)getMonthFromDate:(NSDate *)date {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    NSDateComponents* components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:date];
    NSString *strMonthName = [dateFormatter shortMonthSymbols][components.month-1];
    NSLog(@"%@", strMonthName);
    return strMonthName;
}

一個帶有月份值並按月份數訪問它的簡單數組將起作用。

months = [NSArray arrayWithObjects: @"Jan", @"Feb", nil];  
[months objectAtIndex: i]=> i=0=> "Jan"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM