zoukankan      html  css  js  c++  java
  • 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];  

  • 相关阅读:
    常见排序算法及其C++实现
    Arc Engine二次开发——弹窗进行属性查询
    Python:Shapefile矢量转化为GeoJSON格式
    Python:GeoJson格式的多边形裁剪Tiff影像并计算栅格数值
    Java调用Python相关问题:指定python环境、传入参数、返回结果
    标准WPS框架下的空间信息处理服务部署方法
    AE开发—利用IQueryFilter接口进行属性查询
    Java调用Javascript、Python算法总结
    百度地图爬虫——获取某区域所有中学附近的网吧数据
    Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性
  • 原文地址:https://www.cnblogs.com/fanjing/p/4576521.html
Copyright © 2011-2022 走看看