Objective-C NSDate 的經常使用方法

//字符串轉換爲日期spa

NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];//實例化 NSDateFormatter 對象
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//設定時間格式,@"yyyy年MM月dd日 HH:mm:SS",hh表示12小時制,HH表示24小時制
NSDate *date =[dateFormat dateFromString:@"2015-09-14 00:00:00"];

//日期轉換爲字符串code

NSDate * nowDate = [NSDate date];
NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];//實例化 NSDateFormatter 對象    
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//設定時間格式,@"yyyy年MM月dd日 HH:mm:SS"
NSString *currentDateStr = [dateFormat stringFromDate:nowDate];

//設置時區component

NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
// Asia/Chongqing
// Asia/Shanghai
// Asia/Urumqi
// Asia/Macao
// Asia/Hong_Kong
// Asia/Taipei
[dateFormat setTimeZone:timeZone];

//設置當前時區
[dateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CH"] autorelease]];//en_US (美國)

//獲取經常使用時間orm

//獲取當前時間
NSDate *nowDate = [NSDate date];

//獲取距離當前時間 n 秒之後的時間
NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:3600];

//獲取距離指定日期,n 秒後(以前)的日期
NSDate *date3 = [NSDate dateWithTimeInterval:3600*2 sinceDate:[NSDate date]];

//獲取距離 2001-01-01,n 秒後(以前)的日期
NSDate *date4 = [NSDate dateWithTimeIntervalSinceReferenceDate:3600];

//獲取距離 1970-01-01,n 秒後(以前)的日期
NSDate *date5 = [NSDate dateWithTimeIntervalSince1970:3600]; // 可用於時間戳轉日期

或時間戳轉時間的方法:  
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];  
[formatter setDateStyle:NSDateFormatterMediumStyle];  
[formatter setTimeStyle:NSDateFormatterShortStyle];  
[formatter setDateFormat:@"yyyyMMddHHMMss"];  
NSDate *date = [formatter dateFromString:@"時間戳"];  
NSLog(@"date1:%@",date); 

//獲取 data 和當前時間的差值
NSTimeInterval time = [date timeIntervalSinceNow];

//跟 2001-01-01 比較
NSTimeInterval time2 = [nowDate timeIntervalSinceReferenceDate];

//跟 1970-01-01 比較
NSTimeInterval time3 = [nowDate timeIntervalSince1970];

// 隨機返回一個比較遙遠的將來時間  
NSDate *date = [NSDate distantFuture]; 
  
// 隨機返回一個比較遙遠的過去時間  
NSDate *date = [NSDate distantPast];  

// 返回比較早的那個時間  
 [date earlierDate:date2];  
// 返回比較晚的那個時間  
 [date laterDate:date2];

//計算兩個時間的差值對象

long dd = (long)[date1 timeIntervalSince1970] - [date2 timeIntervalSince1970];

//獲取兩個時間的時間差  
 [date1 timeIntervalSinceDate date2];

//時間顯示格式ip

//上午
[formatter setAMSymbol:@"AM"];
//下午
[formatter setPMSymbol:@"PM"];

ps:ci

[NSDate date]獲取的是GMT時間,要想得到某個時區的時間,如下代碼能夠解決這個問題字符串

NSDate *date = [NSDate date];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *localeDate = [date  dateByAddingTimeInterval: interval];  
NSLog(@"%@", localeDate);

方法二
- (NSString*)dateAsString:(NSDate*)date
 {
NSString *returnValue = @"";
    NSDateFormatter *dateFormatter = nil;
if (date != nil) {
if (dateFormatter ==nil) {
dateFormatter = [[NSDateFormatteralloc]init];
}
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
returnValue = [dateFormatter stringFromDate:date];
}
return returnValue;
}
//方法三
+ (NSString *)fixStringForDate:(NSDate *)date 
{
    NSDateFormatter* dateFormatter = [[NSDateFormatteralloc]init];
    [dateFormatter setDateStyle:kCFDateFormatterFullStyle];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *fixString = [dateFormatter stringFromDate:date]; 
    [dateFormatter release];
    return fixString;
}
//方法四
    NSDateComponents *comps = [[NSDateComponentsalloc]init];
    [comps setYear:2010];
    [comps setMonth:8];
    [comps setDay:24];
    [comps setHour:17];
    [comps setMinute:5];
    [comps setTimeZone: [NSTimeZonetimeZoneWithAbbreviation:@"UTC"]];
    NSLog(@"%@", [NSTimeZonetimeZoneWithAbbreviation:@"UTC"]);
    
    NSCalendar *cal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *referenceTime = [cal dateFromComponents:comps];
    NSLog(@"%@", referenceTime);
NSString* string = @"Wed, 05 May 2015 10:50:00 +0800";
 [inputFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss Z"];

iOS-NSDateFormatter 格式說明:
    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: 毫秒

經常使用日期結構:
yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
MM dd yyyy input

追加:(獲取時間的 年/月/日)string

NSDate *nowDate = [NSDate date];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *nowComponent = [calendar components:unitFlags fromDate:nowDate];
    
    long year = [nowComponent year];
    long month = [nowComponent month];
    long day = [nowComponent day];
    long hour = [nowComponent hour];
    long minute = [nowComponent minute];
    long second = [nowComponent second];
相關文章
相關標籤/搜索