[iOS]时间筛选之<本周、上周、更早>

1、可以实现时间筛选,目测应该还有更简单的方法。

思路: 获取当天时间,和目标时间进行比对操作。

注意点:时区 时区 时区 重要的时区说三遍。

- (void)viewDidLoad {
    [super viewDidLoad];
    NSDate * today = [NSDate date];

    //定义当前时区时间
    NSString * time [email protected]"2015-08-16 00:00:00";
    NSDate* xmlData = [self dateFromString:time];

    xmlData = [self getNowDateFromatAnDate:xmlData];

    if([self intervalSinceNow:xmlData]>=[self getTodayisWeek:today]+7)
    {
        NSLog(@"这个日期是很早以前");
    }
    if([self intervalSinceNow:xmlData]>=[self getTodayisWeek:today]&&[self intervalSinceNow:xmlData]<[self getTodayisWeek:today]+7)
    {
        NSLog(@"这个日期是上周");
    }
    if([self intervalSinceNow:xmlData]<7&&[self intervalSinceNow:xmlData]<[self getTodayisWeek:today])
    {
        NSLog(@"这个日期是本周");
    }

}

- (int)intervalSinceNow: (NSDate *) theDate
{
    NSTimeInterval late=[theDate timeIntervalSince1970]*1;

    NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
    dat=  [self getNowDateFromatAnDate:dat];
    NSTimeInterval now=[dat timeIntervalSince1970]*1;
    NSString *[email protected]"";

    NSTimeInterval cha=now-late;

    if (cha/86400>1)
    {
        timeString = [NSString stringWithFormat:@"%f", cha/86400];
        timeString = [timeString substringToIndex:timeString.length-7];
        return [timeString intValue];
    }
    return -1;

}

- (NSDate *)getNowDateFromatAnDate:(NSDate *)anyDate
{
    //设置源日期时区
    NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];//或GMT
    //设置转换后的目标日期时区
    NSTimeZone* destinationTimeZone = [NSTimeZone localTimeZone];
    //得到源日期与世界标准时间的偏移量
    NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:anyDate];
    //目标日期与本地时区的偏移量
    NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:anyDate];
    //得到时间偏移量的差值
    NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
    //转为现在时间
    NSDate* destinationDateNow = [[NSDate alloc] initWithTimeInterval:interval sinceDate:anyDate];
    return destinationDateNow;
}
- (NSDate *)dateFromString:(NSString *)dateString{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];

     NSDate *destDate= [dateFormatter dateFromString:dateString];

     return destDate;

}

//获得某日是周几
-(int)getTodayisWeek:(NSDate *)today
{
    today = [self getNowDateFromatAnDate:today];
    NSCalendar*calendar = [NSCalendar currentCalendar];
    NSDateComponents*comps;
    [comps setWeekday:0];
    comps =[calendar components:(NSCalendarUnitWeekday)fromDate:today];
    NSInteger weekday = [comps weekday]; // 星期几(注意,周日是“1”,周一是“2”。。。。)
    int  factWeekDay;
    //默认是周日开始
    switch (weekday) {
        case 1:
            factWeekDay = 7  ;
            break;
        case 2:
            factWeekDay = 1  ;
            break;
        case 3:
            factWeekDay = 2  ;
            break;
        case 4:
            factWeekDay = 3  ;
            break;
        case 5:
            factWeekDay = 4  ;
            break;
        case 6:
            factWeekDay = 5  ;
            break;
        case 7:
            factWeekDay = 6  ;
            break;
        default:
            break;
    }

    return  factWeekDay;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-07 04:12:26

[iOS]时间筛选之<本周、上周、更早>的相关文章

iOS时间问题

iOS时间问题 在iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等.解决办法网上比比皆是,但大多零零散散,很多资料并没有说明其中问题.这里集中总结一下,以便于以后查阅和供大家参考.有我自己的理解,错漏之处请大家吐槽. NSDate的8小时问题 NSDate转字符串时间 初始化一个NSDate时间[NSDate date],获取的是零时区的时间(格林尼治的时间: 年-月-日 时:分:秒: +时区),而北京时间是东八区时间,因为时区不同,所以打印的时间相差了8小时

SharePoint 根据时间筛选

最近在整SP列表 老大要求用列表规范周报格式. 提出要在一个视图内查看上周一至周日的内容 翻了下资料想到了以下几种方法 1.在视图页面添加时间筛选器webpart,用参数传入列表筛选 2.在列表添加按钮及TextBox 通过查询字符串 写段js传入参数查询列表 3.直接通过字段值判断 第一种实现方式截图: 第二种实现效果截图 第一种实现方式: 打开SharePoint desiger,插入两个日期筛选器 点击筛选按钮,在弹出框中选择条件 STime为新建的参数,如下图 以上在desiger的设计

Xcode7使用插件的简单方法&amp;&amp;以及怎样下载到更早版本的Xcode

Xcode7自2015年9上架以来也有段时间了, 使用Xcode7以及Xcode7.1\Xcode7.2的小伙伴会发现像VVDocumenter-Xcode\KSImageNamed-Xcode\HOStringSense-for-Xcode等等一系列的插件不能正常使用了,下面我们就来解决一下该版本Xcode插件使用的办法; (一) Xcode7使用插件的简单方法: 1.首先查看 Xcode 的 UUID,在终端执行: defaults read /Applications/Xcode.app/

XSS代码合集(含测试效果详细版)-HTML4与更早版本的向量1

HTML4与更早版本的向量 通过<FRAMESET>和onload执行JavaScript 这个经典的向量表明,有几个标记不需要“src”属性来触发onload事件,例如<IFRAME>.<BODY>和<FRAMESET>. <frameset onload=alert(1)> 适用浏览器与版本 测试效果 通过<TABLE>和后台执行JavaScript Opera 8-10.5+和Internet Explorer 6支持javas

JS 究竟是先有鸡还是有蛋,Object与Function究竟谁出现的更早,Function算不算Function的实例等问题杂谈

壹 ? 引 我在JS 疫情宅在家,学习不能停,七千字长文助你彻底弄懂原型与原型链一文中介绍了JavaScript原型与原型链,以及衍生的__proto__.constructor等一系列属性.在解答了多个问题的同时,也得出了很多有趣的结论.比如我们常说JavaScript中函数是一等公民,这是因为函数扮演了创造万物的角色,原始构造函数Function创造了function fn(){}(ES5中函数与构造函数并无区别).Object().Array().Number().String()等诸多构

李洪强漫谈iOS开发[C语言-043]-判断较早日期

李洪强漫谈iOS开发[C语言-043]-判断较早日期

python __new__()和__init__()哪个更早?

通过代码验证是最靠谱的: class Foo(object): def __init__(self): print 'foo init' def __new__(cls,*args,**kwargs): print 'foo new' return object.__new__(cls,*args,**kwargs) foo = Foo() print type(foo) 结果: >>> foo new foo init <class '__main__.Foo'> >

[iOS]将DataSource分离并构建更轻量的UIViewController

在objccn.io中看到一篇文章,构建更轻量的View Controllers,在此自己实践一下加深理解. 新疆项目,learn--tableview,类前缀为LT,开始我们的实验. 首先需要在StoryBoard中拖拽一个UITableView,在头文件中申明tableView变量并建立连接: 新建ArrayDataSource类,作为TableView的DataSource.目的是将DataSource从原本的ViewController中分离出来: // // ArrayDataSour

iOS时间格式化的方法

**iOS时间格式化方法** //时间转换方法 //    long nowT = time(NULL);  获取当前时间 - (NSString *)revertTimeFormat:(long)timesp{     NSDate *data = [NSDate dateWithTimeIntervalSince1970:timesp];//获得data          NSDateFormatter* formatter = [[NSDateFormatter alloc] init];