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[email protected]"yyyy/MM/dd HH:mm"; //2014/12/26 11:57
fmt1.dateFormat[email protected]"yyyy-MM-dd hh:mm:ss"; //2014-12-26 11:57:30
fmt1.dateFormat[email protected]"yyyy年MM月dd日 hh时mm分ss秒SSSSS"; //2014y12m26日 12时01分52秒15700
fmt1.dateFormat[email protected]"yy.MM.dd hh.mm.ss";
NSString* fmtStr1=[fmt1 stringFromDate:curDate];
NSLog(@"格式化后的日期为:%@",fmtStr1);
//将字符串格式转换为日期格式
NSString* [email protected]"1980-12-15";
NSDateFormatter* df=[NSDateFormatter new];
NSString* [email protected]"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[email protected]"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* [email protected]"2014-2-14";
NSDateFormatter* df2=[NSDateFormatter new];
df2.dateFormat[email protected]"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);
}
时间: 2024-10-05 23:58:10