zoukankan      html  css  js  c++  java
  • 获取当前时间

                                    方法一:用到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];

     
     
     
     
     
  • 相关阅读:
    最近有人说我欺骗消费者,今天来一波视频分享
    前端 Java Python等资源合集大放送
    dubbo源码学习(四):暴露服务的过程
    dubbo源码学习(二) : spring 自定义标签
    Dubbo多注册中心和Zookeeper服务的迁移
    线程各种状态转换分析
    java并发之同步辅助类CountDownLatch
    工作5年的Java程序员,才学会阅读源码,可悲吗?
    【阿里面试系列】Java线程的应用及挑战
    「阿里面试系列」搞懂并发编程,轻松应对80%的面试场景
  • 原文地址:https://www.cnblogs.com/liuziyu/p/4214987.html
Copyright © 2011-2022 走看看