zoukankan      html  css  js  c++  java
  • 获取当前是周几

    这个问题比较蛋疼,老外是周日第一天,周一第二天,

    而我们是周一第一天,周日地7天,虽然可以得到当前是周几-1然后再判断一下就行,但是还是有点不甘心~

    上网查了查,查到了代码

    NSDate *dateForMonth = [NSDate date];
        
        NSCalendar *gregorianT = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
        [gregorianT setFirstWeekday:2];
        
        NSUInteger weekDay = [gregorianT ordinalityOfUnit:NSWeekdayCalendarUnit inUnit:NSWeekCalendarUnit forDate:dateForMonth];
        NSLog(@"~~~~%d",weekDay);

    刚开始用NSDate + NSCalendar + NSDateComponents 来算,可不管怎么算都是老外的结果(周日是1)

    不知道为啥NSCalendar的 setFirstWeekday:2]不生效,可能就是不能这样用

    然后查到了上面的代码,

    [gregorianT ordinalityOfUnit:NSWeekdayCalendarUnit inUnit:NSWeekCalendarUnit forDate:dateForMonth];

    用这个实现了,我们的计算方法(周一是第一天)

    官方文档这么解释的这个方法:Returns, for a given absolute time, the ordinal number of a smaller calendar unit (such as a day) within a specified larger calendar unit (such as a week).

    就是给一个日期+一个小周期(一天weekday)+一个大周期(一个Week),然后返回值就是当前日期的小周期相对于大周期的数值

    例如:::::::当前是周二,函数计算的时候就是计算周二在一个全周(7天)里是第几个(很明显是第二个,所以返回2)

    但是这里需要设置calendar setFirstWeekDay:2](让周一是第一天)这个函数在这才生效~~~~~~

  • 相关阅读:
    Unique Binary Search Trees——LeetCode
    Binary Tree Inorder Traversal ——LeetCode
    Maximum Product Subarray——LeetCode
    Remove Linked List Elements——LeetCode
    Maximum Subarray——LeetCode
    Validate Binary Search Tree——LeetCode
    Swap Nodes in Pairs——LeetCode
    Find Minimum in Rotated Sorted Array——LeetCode
    Linked List Cycle——LeetCode
    VR AR MR
  • 原文地址:https://www.cnblogs.com/xyzaijing/p/3659260.html
Copyright © 2011-2022 走看看