年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2557|回复: 0

巧妙利用日期格式计算出本周所有日期

[复制链接]
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

    发表于 2015-3-19 17:55:10 | 显示全部楼层 |阅读模式
    1、先解释一下,如题意思为如果今天是星期三,那么我想返回从星期一到星期天的所有日期
    2、设计思路:
    2.1、通过日期格式得到今天为星期几,将这个“星期几”转换成数字1~7
    2.2、通过从0~7循环分别用1-7减去上述数字得到本周每天距离今天的天数差,如今天星期三,那么星期一距离今天-2天,星期二距离今天-1天,星期五距离今天2天
    2.3、将天数换算成秒,通过NSDATE的方法得出7天的日期对象,再转换成字符串,搞定!
    3、写成NSDATE的分类,直接使用。

    代码示例:
    NSDate+SA.h
    [Objective-C] 纯文本查看 复制代码
    //
    //  NSDate+SA.h
    //  
    //
    //  Created by yusian on 15-3-19.
    //  Copyright (c) 2015年 Sian. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface NSDate (SA)
    
    // 根据日期获取星期,返回数字(1~7)
    + (NSInteger)weekDayWithDate:(NSDate *)date;
    
    // 日期转换成字符串,格式如:2015-03-19 17:36:34
    + (NSString *)formateDate:(NSDate *)date;
    
    // 本周日期字符串数组
    + (NSArray *)currentWeekDays;
    
    @end
    
    NSDate+SA.m
    [Objective-C] 纯文本查看 复制代码
    //
    //  NSDate+SA.m
    //  
    //
    //  Created by yusian on 15-3-19.
    //  Copyright (c) 2015年 Sian. All rights reserved.
    //
    
    #import "NSDate+SA.h"
    
    @implementation NSDate (SA)
    
    // 本周日期字符串数组
    + (NSArray *)currentWeekDays;
    {
        NSMutableArray *array = [NSMutableArray array];
        // 获取今天星期几(数字)
        NSInteger today = [self weekDayWithDate:[self date]];
        for (int i = 0; i < 7; i++) {
            // 周一到周日七天距离今天的时间差(以秒为单位)
            double timeInterval = (i + 1 - today) * 24 * 60 * 60;
            // 周一到周日的DATE对象
            NSDate *date = [self dateWithTimeIntervalSinceNow:timeInterval];
            // 周一到周日的字符串对象
            NSString *dateStr = [self formateDate:date];
            // 添加到数组
            [array addObject:dateStr];
        }
        return array;
    }
    
    // 日期转换成字符串,格式如:2015-03-19 17:36:34
    + (NSString *)formateDate:(NSDate *)date
    {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        return [formatter stringFromDate:date];
    }
    
    // 根据日期获取星期,返回数字(1~7)
    + (NSInteger)weekDayWithDate:(NSDate *)date
    {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        formatter.dateFormat = @"EEEE";
        // 得到日期那天星期几
        NSString *weekday = [formatter stringFromDate:date];
        // 将星期转换成对应数字
        return [self weekNumberWithWeekDayString:weekday];
    }
    
    // 将星期转换成数字(星期一:1, 星期二:2, 星期三:3 ...)
    + (NSInteger)weekNumberWithWeekDayString:(NSString *)weekDay
    {
        if ([weekDay isEqualToString:@"星期一"]) return 1;
        if ([weekDay isEqualToString:@"星期二"]) return 2;
        if ([weekDay isEqualToString:@"星期三"]) return 3;
        if ([weekDay isEqualToString:@"星期四"]) return 4;
        if ([weekDay isEqualToString:@"星期五"]) return 5;
        if ([weekDay isEqualToString:@"星期六"]) return 6;
        if ([weekDay isEqualToString:@"星期日"]) return 7;
        return 0;
    }
    
    @end
    

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-4-28 22:13 , Processed in 0.048523 second(s), 18 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表