获取当前时间

                                方法一:用到NSDate、NSCalender和NSComponents

        NSDate *date = [NSDate date];            //这个是NSDate类型的日期,所要获取的年月日都放在这里
        NSCalendar *currentCalender = [NSCalendar currentCalendar];
        NSDateComponents * comps;              //存放各种日期元素的容器
        comps = [currentCalender components:(NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitYear|NSCalendarUnitWeekOfMonth|NSCalendarUnitDay) fromDate:currentDate];

       //这句是说你要获取日期的元素有哪些。获取年就要写NSYearCalendarUnit,获取小时就要写NSHourCalendarUnit,中间用|隔开;
        int hour = (int)[comps hour];
        int mintue = (int)[comps minute];
        int second = (int)[comps second];

        int year = (int)[comps year];
        NSIteger month = [comps month];
        NSIteger day = [comps day];

     //获取关于星期的元素

    comps = [calendar components:(NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit) fromDate:currentDate];
NSInteger week = [comps week]; // 今年的第几周
NSInteger weekday = [comps weekday]; // 星期几(注意,周日是“1”,周一是“2”。。。。)
NSInteger weekdayOrdinal = [comps weekdayOrdinal]; // 这个月的第几周


                               方法二:NSDate、NSDateFormatter

       NSDate *date = [NSDate date];

       NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

    [formtter setDateFormat:@"yyyy-MM-dd"]; //获取年月日,MM(月)必须是大写,为了和mm(分)区分

    [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];//获取年月日时分秒
    [formatter setDateFormat:@"hhmmss"];//获取时分秒,hh是12小时制,HH是24小时制  
    [formatter setDateFormat:@"yyyy-MM-dd EEEE HH:mm:ss a"];
       [formatter setDateFormat:@"MM月dd日"];
    [formtter setDateFormat:@"yyyy/MM/dd"];
               ....
   //可根据需要自定义所需的格式,格式化参数如下:

     //

    G: 公元时代,例如AD公元

    yy: 年的后2位

    yyyy: 完整年

    MM: 月,显示为1-12

    MMM: 月,显示为英文月份简写,如 Jan

    MMMM: 月,显示为英文月份全称,如 Janualy

    dd: 日,2位数表示,如02

    d: 日,1-2位显示,如 2

    EEE: 简写星期几,如Sun

    EEEE: 全写星期几,如Sunday

    aa: 上下午,AM/PM

    H: 时,24小时制,0-23

    K:时,12小时制,0-11

    m: 分,1-2位

    mm: 分,2位

    s: 秒,1-2位

    ss: 秒,2位

    s: 毫秒

下面附上几个格式:这个是从Cocoachina上来

yyyy:MM:dd G 'at' HH:mm:ss zzz                 1996.07.10 AD at 15:08:56 PDT

EEE, MMM d, "yy                                         Wed,july 10, '99

h:mm a                                                      12:08 PM

hh 'o"clock' a,zzzz                                       12 o'clock PM, Pacific Daylight Time

K:mm a, z                                                  0:00 PM, PST

yyyyy,MMMM.dd GGG hh:mm aaa                01996.july.10 AD 12:08 PM

 
此外,还有关于formatter.dateStyle 和 关于formatter.timeStyle的设定
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; //英语
formatter.dateStyle = kCFDateFormatterShortStyle;
formatter.timeStyle = kCFDateFormatterShortStyle;
//格式如下:
typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles
    kCFDateFormatterNoStyle = 0,       // 无输出
    kCFDateFormatterShortStyle = 1,    // 10/29/12, 2:27 PM
    kCFDateFormatterMediumStyle = 2,   // Oct 29, 2012, 2:36:59 PM
    kCFDateFormatterLongStyle = 3,     // October 29, 2012, 2:38:46 PM GMT+08:00
    kCFDateFormatterFullStyle = 4      // Monday, October 29, 2012, 2:39:56 PM China Standard Time
};
 
关于区域语言的设定:
 
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];//汉语
则输出如下:
typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles
    kCFDateFormatterNoStyle = 0,       // 无输出
    kCFDateFormatterShortStyle = 1,    // 12-10-29 下午2:52
    kCFDateFormatterMediumStyle = 2,   // 2012-10-29 下午2:51:43
    kCFDateFormatterLongStyle = 3,     // 2012年10月29日 GMT+0800下午2时51分08秒
    kCFDateFormatterFullStyle = 4      // 2012年10月29日星期一 中国标准时间下午2时46分49秒
};

注:NSDateFormatter配合NSDate与NSString之间的转化:

NSDateFormatter有下面2个方法:

    - (NSString *)stringFromDate:(NSDate *)date;//NSDate转NSString

    - (NSDate *)dateFromString:(NSString *)string;//NSString转NSDate

    e.g.

    NSString *dateString=@"1900-01-01";

    NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];

    [dateFormatter setDateFormat:@"yyyy-MM-dd"];

    NSDate *date=[dateFormatter dateFromString:dateString];

注:关于NSString转NSDate少一天的解决办法

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

   NSCalendar *calendar = [NSCalendar currentCalendar];
   NSDateComponents *components = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit |NSYearCalendarUnit) fromDate:[NSDate date]];
   NSDate *todayDate = [calendar dateFromComponents:components];

 
 
 
 
 
原文地址:https://www.cnblogs.com/liuziyu/p/4214987.html