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- ...
随机推荐
- 掌握 ActionResult
我在上一篇博客不要停留在表面,MVC 3 我们要深入一些 说明了我们的掌握程度还是不够,还需要我们继续努力.但是有园友质疑说他们认为我说的只是书院派,并不实用,这令作为程序员的我很是生气.好吧,那咱们 ...
- 温故知新——json
Json简介 Json(JavaScript Object Notation)是一种轻量级的数据交换格式.它是基于javascript(Standard ECMA-262 3rd Edition - ...
- 【DB】SQLite学习笔记
下载”System.Data.SQLite.DLL”,程序中添加引用即可 //创建数据库文件 SQLiteConnection.CreateFile("sqlitetest.db" ...
- Java学习-集合(转)
在编写java程序中,我们最常用的除了八种基本数据类型,String对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!java中集合大家族的成员实在是太丰富了,有常用的ArrayList. ...
- 4、Hbase
1).逻辑模型 Hbase 以表的形式存储数据,每个表由行和列组成,每个列属于一个特定的列族. 表中由行和列确定的存储单元称为一个元素,每个元素保存了同一份数据的多个版本,由时间戳来标识.行健是数据行 ...
- UILocalNotification本地通知
// 执行通知一定要退出应用或挂起应用(进入后台)才能收到通知. 1.在iOS8及其以后版本中使用本地消息需要先获得用户的许可,否则无法成功注册本地消息.因此,我们将询问用户许可的代码片段添加到了ap ...
- JQ+AJAX实现多级联动
利用JQ与AJAX实现三级联动实现的效果: 当前两级改变时,后边一级或两级都会改变: 使用的数据库: html代码: <!doctype html> <html lang=" ...
- JavaScript trim 实现(去除字符串首尾指定字符)
String.prototype.trim = function (char, type) { if (char) { if (type == 'left') { return this.replac ...
- python里面的几个编码函数
时不时的被编码折腾一下 >>> print urllib.quote('中国') %E4%B8%AD%E5%9B%BD >>> s = '%E4%B8%AD%E5% ...
- 解决eclipse+tomcat7的中文乱码的一个方法
我用的eclipse+tomcat7进行开发部署个一个项目,在页面展示的时候出现中文乱码,我想尽了所有方法,eclipse开发环境可以配置成utf-8的地方都进行了配置,tomcat也进行了配置URI ...