码迷,mamicode.com
首页 > 其他好文 > 详细

Foundation框架 - NSDate类

时间:2015-03-19 11:35:57      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:nsdate

NSDate类

//
//  main.m
//  8.NSDate
//
//  Created by wangzhaolu on 14-2-25.
//  Copyright (c) 2014年 Turing. All rights reserved.
//
#import <Foundation/Foundation.h>
static void transTimeZone(NSString* currDateStr);
int main(int argc, const char * argv[]) {
    @autoreleasepool {

NSTimeInterval 时间间隔

        //获取当前日期的两种方式:
        //NSDate* date =[[NSDate alloc]init];
        NSLog(@"******************** NSTimeInterval **********************");
        //@property(readonly) NSTimeInterval timeIntervalSinceNow

        NSDate* date = [NSDate date];
        NSLog(@"当前时间为:%@",date);

        //当前时间到现在的时间间隔  (理论值为0)
        NSTimeInterval  dateIntvl=[date timeIntervalSinceNow];
        NSLog(@"当前时间到现在的时间为:%f",dateIntvl);

        //从1970年到现在的时间间隔
        dateIntvl=[date timeIntervalSince1970];
        NSLog(@"从1970年到现在的时间为:%f",dateIntvl);

        //从苹果的参考时间到现在的时间间隔
        dateIntvl=[date timeIntervalSinceReferenceDate];
        NSLog(@"从苹果参考时间到现在的时间为:%fu",dateIntvl);

        //从现在开始的2天后的时间
        NSTimeInterval nextIntvl=2*24*60*60;
        NSDate* next=[NSDate dateWithTimeIntervalSinceNow:nextIntvl];
        NSLog(@"从现在开始2天后的时间为:%@",next);

NSDateFormatter 日期格式化

       NSLog(@"*********** NSDateFormatter 日期格式化*********************");

        NSDate* curDate=[NSDate new];
        NSDateFormatter* fmt=[[NSDateFormatter alloc]init];

        //dateStyle 系统日期格式
        fmt.dateStyle=NSDateFormatterShortStyle;    //14-12-26
        fmt.dateStyle=NSDateFormatterLongStyle;     //2014年12月26日
        fmt.dateStyle=NSDateFormatterFullStyle;     //2014年12月26日 星期五

        NSString* fmtStr=[fmt stringFromDate:curDate];
        NSLog(@"格式化后的日期为:%@",fmtStr);


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

        //dateFormat 自定义日期格式
        fmt1.dateFormat=@"yyyy/MM/dd HH:mm";               //2014/12/26 11:57
        fmt1.dateFormat=@"yyyy-MM-dd hh:mm:ss";            //2014-12-26 11:57:30
        fmt1.dateFormat=@"yyyy年MM月dd日 hh时mm分ss秒SSSSS"; //2014y12m26日 12时01分52秒15700
        fmt1.dateFormat=@"yy.MM.dd hh.mm.ss";
        NSString* fmtStr1=[fmt1 stringFromDate:curDate];
        NSLog(@"格式化后的日期为:%@",fmtStr1);


        //将字符串格式转换为日期格式
        NSString* source=@"1980-12-15";
        NSDateFormatter* df=[NSDateFormatter new];
        NSString* dateFmt=@"yyyy-MM-dd";
        df.dateFormat=dateFmt;
        df.timeZone =[NSTimeZone timeZoneWithName:@"Europe/London"];
        NSDate* dt=[df dateFromString:source];


        //输出时间戳
        NSTimeInterval intvl=[dt timeIntervalSinceReferenceDate];
        NSLog(@"转换后的时间为:%@,时间戳为:%f",dt,intvl);

NSTimeZone 时区转换

         NSLog(@"****************** NSTimeZone 时区转换********************");

        //遍历时区对象NSTimeZone
        NSArray* zoneNames=[NSTimeZone knownTimeZoneNames];
        for (int i=0; i<zoneNames.count; i++) {
           NSLog(@"%@",zoneNames[i]);
        }


        //调用时区转换函数
        transTimeZone(@"2008-8-8 20:08:08");
//时区转换
static void transTimeZone(NSString* currDateStr)
{
    NSDate* currDate=nil;
    NSLog(@"北京时间:%@",currDateStr);
    NSDateFormatter *fmt3=[NSDateFormatter new];
    fmt3.dateFormat=@"yyyy-MM-dd HH:mm:ss";
    currDate =[fmt3 dateFromString:currDateStr];

    //北京时间转为东京时间
    fmt3.timeZone=[NSTimeZone timeZoneWithName:@"Asia/Tokyo"];
    NSString* zoneTransed=[fmt3 stringFromDate:currDate];
    NSLog(@"东京时间:%@",zoneTransed);

    //北京时间转为纽约时间ff
    fmt3.timeZone=[NSTimeZone timeZoneWithName:@"Europe/Moscow"];
    NSString* zoneTransed1=[fmt3 stringFromDate:currDate];
    NSLog(@"墨西哥时间:%@",zoneTransed1);

    //北京时间转换为纽约时间
    fmt3.timeZone=[NSTimeZone timeZoneWithName:@"America/New_York"];
    NSString* zoneTransed2=[fmt3 stringFromDate:currDate];
    NSLog(@"纽约时间:%@",zoneTransed2);

}

NSCalendar 日历与日期

 NSLog(@"****************** NSCalendar 日历与日期*******************");


        NSString* source1=@"2014-2-14";
        NSDateFormatter* df2=[NSDateFormatter new];
        df2.dateFormat=@"yyyy-MM-dd";
        //求当月最后一天是几号?(求这个月有多少天)
        NSCalendar* cal=[NSCalendar currentCalendar];
        NSDate* date1 =[df2 dateFromString:source1];

        // smaller =天(NSCalendarUnitDay)
        // larger  =月 (NSCalendarUnitMonth)
        NSRange rng=[cal rangeOfUnit:NSCalendarUnitDay
                              inUnit:NSCalendarUnitMonth forDate:date1];
        NSLog(@"%@这个月共有%ld天",source1,rng.length);

        //设置 每周的第一天 1=sunday 2=monday
        [cal setFirstWeekday:2];

        //求本周是星期几?
        NSUInteger day=[cal ordinalityOfUnit:NSCalendarUnitDay
                                      inUnit:NSWeekCalendarUnit forDate:date1];
        NSLog(@"今天是星期:%lu",day);

NSDateComponents 获得日期的各项值

NSLog(@"*********** NSDateComponents 获得日期的各项值 *************");


        //通过NSDateComponents获得日期的各项值 (| "或")
        NSCalendarUnit units=NSCalendarUnitDay|NSCalendarUnitMonth
        |NSCalendarUnitWeekday|NSCalendarUnitYear;

        NSDateComponents* ncp=[cal components:units fromDate:date1];
        NSLog(@"输出ncp:%@",ncp.description);


        //求下个月的这一天是星期几?
        ncp.month +=1;
        NSDate* newDate =[cal dateFromComponents:ncp];

        NSUInteger newday=[cal ordinalityOfUnit:NSCalendarUnitDay
                                         inUnit:NSWeekCalendarUnit
                                        forDate:newDate];
        NSLog(@"下个月的今天[%@]是星期:%lu",[df stringFromDate:newDate],newday);


    }

Foundation框架 - NSDate类

标签:nsdate

原文地址:http://blog.csdn.net/wangzi11322/article/details/44453703

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!