【问题标题】:How to get specific date from weekday name in this week如何从本周的工作日名称中获取特定日期
【发布时间】:2014-08-10 21:17:20
【问题描述】:

我们如何使用日期名称(星期一和星期日之间)获取当前一周中特定日期的日期?例如我想知道这个星期天的日期是什么,或者上星期一的日期是什么。

编辑:这里我是如何借助 @juniperi 的链接解决问题的

//To get current day
CFAbsoluteTime at = CFAbsoluteTimeGetCurrent();
CFTimeZoneRef tz = CFTimeZoneCopySystem();
SInt32 currentWeekdayNumber = CFAbsoluteTimeGetDayOfWeek(at, tz);

//We are adding or substracting from the day we want and add to the current date
NSDate *now = [NSDate date];
int daysToAdd = theDayNumberWeWant - currentWeekdayNumber;
NSDate *newDate1 = [now dateByAddingTimeInterval:60*60*24*daysToAdd];

【问题讨论】:

标签: ios objective-c xcode nsdate


【解决方案1】:

传递您的日期,此方法将返回该日期所在周的第一天的日期。就像您通过当前日期一样,您将获得本周第一天的日期。像这样,您可以计算其他日期的日期。

+ (NSDate *) getFirstDayOfTheWeekFromDate:(NSDate*)givenDate
{
NSCalendar *calendar = [NSCalendar currentCalendar];

NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:givenDate];
[components setWeekday:1];
[components setWeek:[components week]];

return [calendar dateFromComponents:components];
}

【讨论】:

    【解决方案2】:
    int yourDOW = [[[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit
        fromDate:yourDate] weekday];
    

    您可以通过这种方式获取当前日期的哪一天,例如:星期一、星期二等。

    据此,您可以计算下一天/上一天和/或日期:

    例如:

    (星期日用 1 表示。)2014 年 6 月 20 日是星期五,那么结果是 6. 那么上周一就是:date - (currentDay - requiredDay) = 20 - ( 6 (friday) - 2 (monday)) = 20 - (4) = 16

    这意味着,2014 年 6 月 16 日是最后一个星期一。

    希望这会有所帮助。更多详情请参考NSDateComponents.

    【讨论】:

    • 感谢您的帮助。我以非常相似的方式解决了。你的帖子很有帮助。检查我的第一篇文章。
    猜你喜欢
    • 2011-12-21
    • 2023-03-26
    • 2021-08-22
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多