NSDate相差8個小時問題

2021-07-11 08:04:04 字數 1688 閱讀 1615

直接看**,有詳細的注釋可以知道具體怎麼用:

nsdate * date = [nsdate date];

nslog(@"date:%@", date);

nsdateformatter * outputformatter = [[nsdateformatter alloc] init];

[outputformatter setlocale:[[nslocale alloc] initwithlocaleidentifier:@"en_us"]];

nstimezone * timezone = [nstimezone timezoneforsecondsfromgmt:8 * 3600];//直接指定時區

[outputformatter settimezone:timezone];//這裡指定不指定時區並沒有什麼用

[outputformatter setdateformat:@"yyyy-mm-dd hh:mm:ss"];

nsstring * outputdate = [outputformatter stringfromdate:date];

nslog(@"outputdate:%@", outputdate);

//這裡處理8個小時時間差問題,下面這三句可以解決相差8個小時問題

nstimezone * zone = [nstimezone systemtimezone];

nsinteger interval = [zone secondsfromgmtfordate:date];

nsdate * nowdate = [date datebyaddingtimeinterval:interval];

nslog(@"nowdate:%@", nowdate);

//所以,nsdate轉字串和直接使用nsdate的時候一定要注意,轉字串的時候不用處理差8個小時問題,直接用nsdate的時候需要處理相差8個小時的問題

nsdateformatter * outputformatter1 = [[nsdateformatter alloc] init];

[outputformatter1 setdateformat:@"yyyy-mm-dd hh:mm:ss"];

nsstring * outputnowdate = [outputformatter1 stringfromdate:nowdate];

nslog(@"outputnowdate:%@", outputnowdate);

//使用outputformatter輸出的時候總是和nsdate相差8個小時

輸出:

2016-04-20 16:54:42.286 date1[16557:6377276] date:2016-04-20 08:54:42 +0000

2016-04-20 16:54:42.287 date1[16557:6377276] outputdate:2016-04-20 16:54:42

2016-04-20 16:54:42.288 date1[16557:6377276] nowdate:2016-04-20 16:54:42 +0000

2016-04-20 16:54:42.288 date1[16557:6377276] outputnowdate:2016-04-21 00:54:42

希望你可以通過上面的**,解決相差8個小時問題

NSDate相差8個小時

直接看 有詳細的注釋可以知道具體怎麼用 objc view plain copy nsdate date nsdate date nslog date date nsdateformatter outputformatter nsdateformatter alloc init outputform...

iOS 解決時間相差8小時問題

原因 使用 nsdate date nsdate date 獲取的時間是標註的utc時間,和北京時間相差8小時.將utc時間轉成當地的時間只需要設定 nstimezone zone nstimezone systemtimezone 1.給nsdate設定時區 nsdate date nsdate ...

雙系統,Ubuntu時間不對,相差8個小時

從伺服器上同步時間 sudo ntpdate ntp.ubuntu.com sudo ntpdate time.nist.gov 設定電腦的時區為上海 sudo cp usr share zoneinfo asia shanghai etc localtime xp 和 ubuntu 相差了 8 小...