NSDate 時區(qū)設(shè)置 及轉(zhuǎn)換

先說下自己開發(fā)過程中之前迷惑的兩點:

1 unix 時間戳使用 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #3495af}span.s1 {font-variant-ligatures: no-common-ligatures}

NSDateFormatter 進(jìn)行轉(zhuǎn)換時,會自動轉(zhuǎn)換為當(dāng)前時區(qū)的時間。
2 字符串的類型的時間,如“2016-01-01”,系統(tǒng)會默認(rèn)為是當(dāng)前時區(qū)的時間,轉(zhuǎn)換為NSDate時是0時區(qū)的 。

自已定義的轉(zhuǎn)換方法
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #008f00}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #3495af}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; min-height: 14.0px}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'PingFang SC'; color: #008f00}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font: 12.0px 'PingFang SC'; font-variant-ligatures: no-common-ligatures}span.s3 {font-variant-ligatures: no-common-ligatures; color: #3495af}span.s4 {font-variant-ligatures: no-common-ligatures; color: #0433ff}span.s5 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s6 {font-variant-ligatures: no-common-ligatures; color: #b4261a}span.s7 {font: 12.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #000000}span.s8 {font: 12.0px Menlo; font-variant-ligatures: no-common-ligatures}

// serverTime 為標(biāo)準(zhǔn)時間戳

  • (NSString *)dateStringWithServerTime:(double)serverTime
    {
    return [self dateStringWithServerTime:serverTime withForm:@"yyyy-MM-dd HH:mm:ss"];
    }

//

  • (NSString *)dateStringWithServerTime:(double)serverTime withForm:(NSString *)form
    {
    // date 是0時區(qū)的時間
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:serverTime];

    // 系統(tǒng)會默認(rèn)轉(zhuǎn)化為東八區(qū)時間
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:form];
    NSString *dateStr = [dateFormatter stringFromDate:date];
    return dateStr;
    }

// serverTime 為標(biāo)準(zhǔn)時間戳

  • (NSTimeInterval)secondsWithDateString:(NSString *)dateString withForm:(NSString *)form
    {
    //系統(tǒng)會認(rèn)為字符串是東八區(qū)的時間, 轉(zhuǎn)乘NSDate是零時區(qū)的

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:form];
    NSDate *date = [dateFormatter dateFromString:dateString];

// //將轉(zhuǎn)換回來的對象手動加上8小時,回到北京時間
// NSDate *date2 = [date dateByAddingTimeInterval:8 * 60 * 60];
// // 添加默認(rèn)系統(tǒng)時差 為當(dāng)前時間
// NSTimeInterval interVal = [[NSTimeZone defaultTimeZone] secondsFromGMTForDate:[NSDate date]];
// NSDate *date3 = [date dateByAddingTimeInterval:interVal];

return [date timeIntervalSince1970];

}

//

  • (NSTimeInterval)secondsWithDateString:(NSString *)dataString
    {
    return [self secondsWithDateString:dataString withForm:@"yyyy-MM-dd HH:mm:ss"];
    }

// 獲取 當(dāng)前0時區(qū)的日期 serverTime 為標(biāo)準(zhǔn)時間戳

  • (NSDate *)dateWithSeconds:(double)serverTime
    {
    return [NSDate dateWithTimeIntervalSince1970:serverTime];
    }

參考文章:http://www.lxweimin.com/p/df41659b06a9

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容