object c小代码——日期篇
1、判断两个日期是否是同一天,不要求小时,分钟要一样
用法
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; BOOL datesAreEqual = [calendar isDate:firstDate equalToDate:secondDate toUnitGranularity:NSDayCalendarUnit];
NSCalendar+equalWithGranularity.h
#import <Foundation/Foundation.h> @interface NSCalendar (equalWithGranularity) - (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 withGranularity:(NSCalendarUnit)granularity; @end
NSCalendar+equalWithGranularity.m
#import "NSCalendar+equalWithGranularity.h"
@implementation NSCalendar (equalWithGranularity)
- (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 withGranularity:(NSCalendarUnit)granularity {
if ([date1 isEqualToDate:date2]) {
return YES;
}
int componentFlags = [self componentFlagsWithGranularity:granularity];
date1 = [self dateFromDate:date1 withComponentFlags:componentFlags];
date2 = [self dateFromDate:date2 withComponentFlags:componentFlags];
return [date1 isEqualToDate:date2];
}
- (int)componentFlagsWithGranularity:(NSCalendarUnit)granularity
{
int componentFlags = ;
for (int i = << ; i <= granularity ; i = i<<) {
componentFlags = componentFlags | i;
}
return componentFlags;
}
- (NSDate *)dateFromDate:(NSDate *)date withComponentFlags:(int)componentFlags {
NSDateComponents *components = [self components:componentFlags fromDate:date];
return [self dateFromComponents:components];
}
@end
2、时间若干操作
// 当前时间创建NSDate NSDate *myDate = [NSDate date]; NSLog(@"myDate = %@",myDate); //从现在开始的24小时 NSTimeInterval secondsPerDay = **; NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay]; NSLog(@"myDate = %@",tomorrow); //根据已有日期创建日期 NSTimeInterval secondsPerDay1 = **; NSDate *now = [NSDate date]; NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1]; NSLog(@"yesterDay = %@",yesterDay); //比较日期 BOOL sameDate = [now isEqualToDate:yesterDay]; NSLog(@"sameDate = %lu",sameDate); 4.1//获取较早的日期 NSDate *earlierDate = [yesterDay earlierDate:now]; NSLog(@"earlierDate = %@",earlierDate); 4.2//较晚的日期 NSDate *laterDate = [yesterDay laterDate:now]; NSLog(@"laterDate = %@",laterDate); //两个日期之间相隔多少秒 NSTimeInterval secondsBetweenDates= [yesterDay timeIntervalSinceDate:now]; NSLog(@"secondsBetweenDates= %lf",secondsBetweenDates); //通过NSCALENDAR类来创建日期 NSDateComponents *comp = [[NSDateComponentsalloc]init]; [comp setMonth:]; [comp setDay:]; [comp setYear:]; NSCalendar *myCal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *myDate1 = [myCal dateFromComponents:comp]; NSLog(@"myDate1 = %@",myDate1); //从已有日期获取日期 unsigned units = NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit; NSDateComponents *comp1 = [myCal components:units fromDate:now]; NSInteger month = [comp1 month]; NSInteger year = [comp1 year]; NSInteger day = [comp1 day]; //NSDateFormatter实现日期的输出 NSDateFormatter *formatter = [[NSDateFormatteralloc]init]; [formatter setDateStyle:NSDateFormatterFullStyle];//直接输出的话是机器码 //或者是手动设置样式[formatter setDateFormat:@"yyyy-mm-dd"]; NSString *string = [formatter stringFromDate:now]; NSLog(@"string = %@",string); NSLog(@"formater = %@",formatter);
转自 http://www.cnblogs.com/xdream86/archive/2012/12/17/2821305.html,感谢原作者的整理收集
object c小代码——日期篇的更多相关文章
- Android 之窗口小部件高级篇--App Widget 之 RemoteViews
Android 之窗口小部件高级篇--App Widget 之 RemoteViews 在之前的一篇博文(Android 之窗口小部件详解--App Widget)中,已经介绍了App Widget的 ...
- 微信小程序入门篇
微信小程序入门篇: 准备工作 IDE搭建 就不多说了,没有内测码去下载个破解版吧,我用了一下,学习完全够了!IDE破解版+安装教程 图片发自简书App 知识准备 JavaScrip还是要看看的,推荐教 ...
- 前端微信小程序实战篇
电商底部导航栏的制作 我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个人 ...
- 【微信小程序】转载:微信小程序实战篇-下拉刷新与加载更多
下拉刷新 实现下拉刷新目前能想到的有两种方式 1. 调用系统的API,系统有提供下拉刷新的API接口 当然,你可以直接在全局变量app.json的window里面配置上面这个属性,这样整个项目都允许下 ...
- 微信小程序实战篇:商品属性联动选择(案例)
本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果,素材参考了一点点奶茶. 效果演示: 商品属性联动.gif 代码示例 1.commodity.xml <!-- < ...
- 自定义View4-塔防小游戏第一篇:一个防御塔+多个野怪(简易版)*
塔防小游戏 第一篇:一个防御塔+多个野怪(简易版) 1.canvas画防御塔,妖怪大道,妖怪行走路线 2.防御塔攻击范围是按照妖怪与防御塔中心距离计算的,大于防御塔半径则不攻击,小于则攻击 ...
- 在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况
自从人类学会了使用火,烤制的方式替代了人类的消化系统部分功能,从此人类的消化系统更加简单,加速了人脑的进化:自从SharePoint 2010开始有了Client Side Object Model ...
- 【processing】小代码
今天无意间发现的processing 很有兴趣 实现很简洁 void setup(){ } void draw(){ background(); && mouseY > heig ...
- object实现小老鼠交互
直接使用 <p style="text-align: center; "> <object type="application/x-shockwave- ...
随机推荐
- javascript学习笔记2
二.下列哪些变量是不正确的 说明原因 var a1; var b1 = 3; c1 ='good'; var d1 = c1 = e1; × 连等必须赋值 var g1 = 'hei' goo ...
- 《C和指针》读书笔记——第一章 快速上手
1.注释代码可以用: #if 0 statements #endif 2.参数被声明为const,表明函数将不会修改函数调用者的所传递的这个参数. 3.scanf("%d",&am ...
- 蜗牛历险记(二) Web框架(中)
上篇简单介绍了框架所使用的Autofac,采用Autofac提供的Ioc管理整个Web项目中所有对象的生命周期,实现框架面向接口编程.接下来介绍框架的日志系统. 一.介绍之前 框架日志是否有存在的必要 ...
- margin负值的使用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- web网页前端制作中的SEO方法
在SEO盛行的今天到处都在谈优化,对于网站前端制作人员来说,有几点是跟SEO相关 的,也就是SEO站内优化中的一部分,下面总结几点: 1.title,.页面的标题,不用多说,这个必须有! 2.keyw ...
- C#变成数据导入Excel和导出Excel
excel 基础 •整个excel 表格叫工作表:workbook:工作表包含的叫页:sheet:行:row:单元格:cell. •excel 中的电话号码问题,看起来像数字的字符串以半角单引号开头就 ...
- zoj 3716
题目给我们四个点,要求我们以这四个点为圆心,形成四个相切的圆: 求他们的半径和: 首先我们从他们中间选出三个点,以这三个点为圆心的三个圆最大可以两两互相相切: 证明:假设这三个圆的半径分别为a,b,c ...
- android 进度对话框的使用
import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; public cla ...
- php smarty insert用法
insert用于模板中. 用法:{insert name="method_name"} 此时会寻找php文件中方法名为:insert_method_name的函数, 将其返回值作为 ...
- NGUI 的使用教程与实例(入门)(1 )
NGUI教程:步骤1-Scene 1.创建一个新的场景(New Scene).2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a New UI,会打开UI创建向导. ...