NSDateFormatter 和 NSDateComponents 的用法

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: %d, Mins:%d, sec:%d",

[toDate description], diffYear, diffMon, diffDay, diffHour, diffMin,diffSec );

[toDate release];

[startDate release];

[chineseClendar release];

时间: 2024-10-03 14:55:44

NSDateFormatter 和 NSDateComponents 的用法的相关文章

疯狂iOS上1

一:iOS应用与开发环境 1.1 OC与iOS简介 1.2 搭建iOS开发环境 1.3 第一个OC程序 1.4 熟悉Xcode 左边导航面板从左到右依次是:项目导航.符号导航.搜索导航.问题导航.测试导航.调试导航.断点导航.日志导航,快捷键是command+1/2 右边检查器面板包括:文件检查器.快速帮助检查器.身份检查器.属性检查器.大小检查器.连接检查器,快捷键是command+option+1/2 右下端库面板包括:文件模板库.代码片段库.对象库.媒体库,快捷键是control+opti

iOS中处理时间的类及使用

1. NSDate这个类就是生成一个date如果你用[NSDate date]这个最最常用的方法你可以得到系统当前的时间(UTC时间,不管你当前时区的)比如:NSDate *date = [NSDate date];NSLog(@"%@", date);输出:2013-04-27 07:25:59 +0000 在类的头文件NSDate.h中,我们可以看到所有的方法和类方法,但没有任何一个数据,所以我们可以打印出时间的字符串,但没办法单独去获得年.月.日等信息.在苹果的官方文档上说这个类

NSDate(NSCalendar,NSDateComponents,NSDateFormatter)

-1 NSString 转成 NSDate NSString *time = @"2014-05-18 09:24:40"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSDate *date = [dateFormatter dateFromString:time]; NSLo

NSDateFormatter格式详细列表一览

转自:http://www.cnblogs.com/xinus/archive/2012/10/29/NSDateFormatter_samples.html 前言:iOS开发中NSDateFormatter是一个很常用的类,用于格式化NSDate对象,支持本地化的信息.与时间相关的功能还可能会用到NSDateComponents类和NSCalendar类等.本文主要列出NSDateFormatter常见用法. NSDate对象包含两个部分,日期(Date)和时间(Time).格式化的时间字符串

objectC时间用法

#define kDEFAULT_DATE_TIME_FORMAT (@"yyyy-MM-dd HH:mm:ss") //获取当前日期,时间+(NSDate *)getCurrentDate{    NSDate *now = [NSDate date];    return now;} //将日期转换为字符串(日期,时间)+(NSString *)getDateStringFromDate:(NSDate *)date{    NSInteger location = 0;    N

IOS中NSdate用法

// date方法返回的就是当前时间(now) 02. NSDate *date = [NSDate date]; 03.// now: 11:12:40 04.// date: 11:12:50 05. date = [NSDate dateWithTimeIntervalSinceNow:10];//返回当前时间10秒后的时间 06. // 从1970-1-1 00:00:00开始 07. date = [NSDate dateWithTimeIntervalSince1970:10];//

AFNetwork 作用和用法详解

AFNetworking是一个轻量级的iOS网络通信类库.它建立在NSURLConnection和NSOperation等类库的基础上,让很多网络通信功能的实现变得十分简单.它支持HTTP请求和基于REST的网络服务(包括GET.POST. PUT.DELETE等).支持ARC. Github地址:https://github.com/AFNetworking/AFNetworking // // MJViewController.m // 03.AFN演练 // // Created by a

NSString 用法大全。

一.NSString 创建字符串.  NSString *astring = @"This is a String!"; 创建空字符串,给予赋值.  NSString *astring = [[NSString alloc] init]; astring = @"This is a String!"; NSLog(@"astring:%@",astring); string release]; 使用变量初始化  NSString *name = 

iOS开发--NSDateFormatter

NSDate对象包含两个部分,日期(Date)和时间(Time).格式化的时间字符串主要也是针对日期和时间的 1.基础用法 1 NSDate* now = [NSDate date]; 2 NSDateFormatter* fmt = [[NSDateFormatter alloc] init]; 3 fmt.dateStyle = kCFDateFormatterShortStyle; 4 fmt.timeStyle = kCFDateFormatterShortStyle; 5 fmt.lo