NSDateFormatter文字列の回転時間の差8時間および共通フォーマット記録
2944 ワード
プロジェクトをしている間に、サーバー側から返された時間文字列が正しいということに気づき、結果的にNSDateに変換された時にはわけがわからず8時間も少なく、多くの資料を調べ、formatterのNSLocalをセットすればいいという話が多く、以下のように解決方法一locale(テスト済み、役に立たない) を設定するソリューション2 timeZoneを使用して位相差を追加するタイムゾーン(テストされた、この時間偏差の問題を完璧に解決できる)、 具体的な修正オフセット8時間タイムゾーンの問題は以下の通りです.まとめNSDateFormatterの一般的なフォーマット です
コードネーム
代表的意義.
例
G
西暦時代
例えばAD西暦
yy
年の後2位
2017年の17
yyyy
完全年
2017
MM
月
01-12と表示される月
MMM
簡写月英語
Janなどの英語の月の略記として表示されます
MMMM
全書き月英語
Janualyなどの英語の月のフルネームとして表示
dd
日
2桁表示、例えば02
d
日
1~2ビット表示、2
EEE
曜日を略す
サンのように
EEEE
全部で何曜日書きますか.
サンデーのように
aa
午後
AM/PM
H
時
24時間制、0-23
HH
時
24時間制、00-23
K
時
12時間制、0-11
m
分
1~2ビット
mm
分
2位、00~60
s
秒
1~2ビット
ss
秒
2位、2位未満の前に0を補う
S
ミリ秒
1秒は1000ミリ秒
Z
タイムゾーン
GMT処理時間の共通クラスとNSCalendar 1.calenderおよびcomponentsを使用して、一般的な年、月、日、曜日などの属性 を取得します.
calendarを使用して、ある大きな区間に何個のセル間があるかを取得します.例えば、ある月に何日あるか
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMdd HHmmss";
formatter.locale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_cn"]];
date famatter String ,
は以下のコードを通じて、どのタイムゾーンNSArray *arr = [NSTimeZone knownTimeZoneNames];
中国大陸のすべてのタイムゾーンが上海(上海タイムゾーンは中国の標準時間北京時間):“Asia/Schanghai”、重慶:“Asia/Chongqing”、ウルムチ:“Asia/Urumqi”、また中国に属するのは香港「Asia/Hong_Kong」、台北「Asia/Taipei」
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMdd HH:mm:ss";
//
NSDate *date = [formatter dateFromString:@"20170501 01:12:13"];
// ,
NSTimeZone * zone = [NSTimeZone systemTimeZone];
// zone
NSInteger interval = [zone secondsFromGMTForDate:date];
//
NSDate *systemZoneDate = [date dateByAddingTimeInterval:interval];
yyyyyMMdd HH:mm:ss 20170520 13:14:59`
yyyy-MM-dd HH:mm:ss 2017-05-20 13:14:59
コードネーム
代表的意義.
例
G
西暦時代
例えばAD西暦
yy
年の後2位
2017年の17
yyyy
完全年
2017
MM
月
01-12と表示される月
MMM
簡写月英語
Janなどの英語の月の略記として表示されます
MMMM
全書き月英語
Janualyなどの英語の月のフルネームとして表示
dd
日
2桁表示、例えば02
d
日
1~2ビット表示、2
EEE
曜日を略す
サンのように
EEEE
全部で何曜日書きますか.
サンデーのように
aa
午後
AM/PM
H
時
24時間制、0-23
HH
時
24時間制、00-23
K
時
12時間制、0-11
m
分
1~2ビット
mm
分
2位、00~60
s
秒
1~2ビット
ss
秒
2位、2位未満の前に0を補う
S
ミリ秒
1秒は1000ミリ秒
Z
タイムゾーン
GMT
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *date = [NSDate date];
NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth fromDate:date];
components
@property NSInteger era;
@property NSInteger year;
@property NSInteger month;
@property NSInteger day;
@property NSInteger hour;
@property NSInteger minute;
@property NSInteger second;
@property NSInteger weekday;
NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSGregorianCalendar];
NSDate *date = [NSDate date];
NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];
NSLog(" %ld ",range.length);