2017-08-02 15 views
2

2番目の転送を時間と分にしたいのですが、私はその日は気にしません。以下のコードは私に間違った結果をもたらしました。私は "7879"秒を過ぎ、それは'02:11:19 'とは逆のはずですが、10:11:20に戻ります。私はどこが間違っているのか分からない。NSDateが間違った答えを返しました(Objective-C)

enter image description here p.s.私はd値が8時間であることに気付きました。それはtimeZoneについてのものだと思いますが、コードformatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];を追加すると同じ結果が返されます。

+0

'NSDate *日時= [NSDate日付]で試してみてください;'とまだ間違った結果を取得するかどうかを確認? –

+0

コードを追加して、問題を追跡することもできます。 – KKRocks

+0

実際にタイムスタンプとは何ですか?日付/時間は秒です。 – adev

答えて

5

NSDateComponentsFormatterを使用します。

NSDateComponentsFormatter *dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init]; 
dateComponentsFormatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorPad; 
dateComponentsFormatter.allowedUnits = (NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond); 
NSLog(@"%@", [dateComponentsFormatter stringFromTimeInterval:7879]); 

出力:

2:11:19 

スウィフト3バージョン

let dateComponentsFormatter = DateComponentsFormatter() 
dateComponentsFormatter.zeroFormattingBehavior = .pad 
dateComponentsFormatter.allowedUnits = ([.hour, .minute, .second]) 
print("\(String(describing: dateComponentsFormatter.string(from: 7879)))") 
+0

これは良いですね。 – adev

関連する問題