NSDateFormatter NSDateComponents iphone 时间格式详

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 11:14 点击:
NSDateFormatter调整时间格式的代码
在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。
例如:
//实例化一个NSDateFormatter对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 
//设定时间格式,这里可以设置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
 
//用[NSDate date]可以获取系统当前时间
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];
 
//输出格式为:2010-10-27 10:22:13
NSLog(@”%@”,currentDateStr);
 
//alloc后对不使用的对象别忘了release
[dateFormatter release];
 
NSDateComponents
NSDateComponents封装在一个可扩展的,面向对象的方式的日期组件。它是用来弥补时间的日期和时间组件提供一个指定日期:小时,分钟,秒,日,月,年,等等。它也可以用来指定的时间,例如,5小时16分钟。一个NSDateComponents对象不需要定义所有组件领域。当一个NSDateComponents的新实例被创建,日期组件被设置为NSUndefinedDateComponent。
一个NSDateComponents对象本身是毫无意义的;你需要知道它是针对什么日历解释,你需要知道它的值是否是正整数和值是多少。
NSDateComponents的实例不负责回答关于一个日期以外的信息,它是需要先初始化的。例如,如果你初始化一个对象为2004年5月6日,其星期几NSUndefinedDateComponent,不是星期四。要得到正确的星期几,你必须创建一个NSCalendar日历实例,创建一个NSDate对象并使用dateFromComponents:方法,然后使用components:fromDate:检索平周几
Getting Information About an NSDateComponents Object
 
获取一个NSDateComponents对象的信息
 
–era 时代
–year 年
–month 月
–day 天
–hour 时
–minute 分
–second 秒
–week
–weekday
–weekdayOrdinal
–quarter 季度
Setting Information for an NSDateComponents Object
 
设置一个NSDateComponents对象的信息
 
–setEra:
–setYear:
–setMonth:
–setDay:
–setHour:
–setMinute:
–setSecond:
–setWeek:
–setWeekday:
–setWeekdayOrdinal:
–setQuarter:
例子如下:获得2004年5月6日是星期几
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:6];
[comps setMonth:5];
[comps setYear:2004];
NSCalendar *gregorian = [[NSCalendar alloc]
    initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];
[comps release];
NSDateComponents *weekdayComponents =
    [gregorian components:NSWeekdayCalendarUnit fromDate:date];
int weekday = [weekdayComponents weekday];
NSLog(@"%d",weekday);
如果需要更加详细,请查阅“Calendars, Date Components, and Calendar Units”in Date and Time Programming Guide.日期和时间的程序指南
 
//一段例子:计算距离某一天还有多少时间
NSDate* toDate   = [ [ NSDate alloc] initWithString:@"2012-9-29 0:0:00 +0600" ]; 
NSDate*  startDate  = [ [ NSDate alloc] init ]; 
NSCalendar* chineseClendar = [ [ NSCalendar alloc ] initWithCalendarIdentifier:NSGregorianCalendar ]; 
NSUInteger unitFlags = 
NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit; 
NSDateComponents *cps = [chineseClendar components:unitFlags fromDate:startDate  toDate:toDate  options:0]; 
NSInteger diffHour = [cps hour]; 
NSInteger diffMin    = [cps minute]; 
NSInteger diffSec   = [cps second]; 
NSInteger diffDay   = [cps day]; 
NSInteger diffMon  = [cps month]; 
NSInteger diffYear = [cps year]; 
NSLog(  @" From Now to %@, diff: Years: %d  Months: %d, Days; %d, Hours: %

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Lexical or Preprocessor Issue 'xxx.h
      • ios学习笔记(二)xcode 4.3.2下实现基本交互
      • ios版本的helloworld
      • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
      • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
      • IOS类似iphone通讯录TableView的完整demo【附源码】
      • UITableView一些方法
      • [iPhone中级]iPhone团购信息客户端的开发 (二)
      • iphone(object-c)内存管理(1)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1