日/数時間/分/秒のスイフトカウントダウンタイマーラベル -- ios フィールド と swift フィールド と datetime フィールド と nsdate フィールド と nstimer フィールド 関連 問題

Swift countdown timer labels for Days/Hours/Minutes/Seconds












5
vote

問題

日本語

4/0/0 3/0/7 4/0/7 4/0/3 4/0/4 4/0/1 3/0/5 3/0/1 2/0/5 2/0/3 2/0/4 2/0/6 3/0/2 1/0/3 6/0/6 6/0/12 1/0/5 1/0/4 3/0/4 3 4/0/0 3/0/7 4/0/7 4/0/3 4/0/4 4/0/1 3/0/5 3/0/1 2/0/5 2/0/3 2/0/4 2/0/6 3/0/2 1/0/3 6/0/6 6/0/12 1/0/5 1/0/4 3/0/4 2 にカウントダウンするカウントダウンタイマーを作成しています。私たちがカウントしている日付を示すラベルがあり、それはうまく機能します。

私が追加しようとしているのは、残りの日数と時間/数分/数分/秒数のためのラベルはここに私がしたことです。分でしかしそれは明らかにカウントダウン全体の値を示しています。誰かが私がここで正しい論理を解決するのを助けることができることを願っています。

<事前> <コード> 4/0/0 3/0/7 4/0/7 4/0/3 4/0/4 4/0/1 3/0/5 3/0/1 2/0/5 2/0/3 2/0/4 2/0/6 3/0/2 1/0/3 6/0/6 6/0/12 1/0/5 1/0/4 3/0/4 4

私は私が探しているものを推測しています 4/0/0 3/0/7 4/0/7 4/0/3 4/0/4 4/0/1 3/0/5 3/0/1 2/0/5 2/0/3 2/0/4 2/0/6 3/0/2 1/0/3 6/0/6 6/0/12 1/0/5 1/0/4 3/0/4 5 クラスの

のに相当します。
英語

I'm creating a countdown timer that counts down to an NSDate set in a UIDatePicker. I have a label that shows the date we're counting down to and that works fine.

What I'm also trying to add is labels for the number of whole days left and number of hours/minutes/seconds left in the current day (i.e. never more than 23/59/59) Here's what I've done at the minute but it obviously shows the values for the whole countdown. Hoping someone can help me work out the correct logic here.

let secondsLeft = sender.date.timeIntervalSinceDate(NSDate()) hoursLabel.text = String(secondsLeft % 3600) minutesLabel.text = String((secondsLeft / 60) % 60) secondsLabel.text = String(secondsLeft % 60) 

I guess what I'm looking for is some swift equivalent of the datetime class you get in php

</div
              

回答リスト

1
 
vote
vote
ベストアンサー
 

NSCalendarクラスを見てください。具体的には方法を見てください <コード> link_to4 は、2日の日付を取り、指定した単位を使用してそれらの違いを計算することができます。

ローカライズ可能なので、現在のカレンダーを使用してユーザーが中国語、ヘブライ語、またはアラビア語のカレンダーを使用する場合、計算はそのカレンダーの結果を正しく正しく与えます。

 

Take a look at the NSCalendar class. Specifically look at the method components:fromDate:toDate:options: That lets you take 2 dates and calculate the difference between them using whatever units you specify.

It's also localizable, so if you use the current calendar and the user uses the Chinese, Hebrew, or Arabic calendar then the calculations will give you results correct for that calendar.

</div
 
 
       
       
10
 
vote

それを手に入れた - swift 2

<事前> <コード> link_to5
 

Got it - for Swift 2

let calendar = NSCalendar.currentCalendar() let components = calendar.components([.Day, .Hour, .Minute, .Second], fromDate: NSDate(), toDate: sender.date, options: []) daysLabel.text = String(components.day) hoursLabel.text = String(components.hour) minutesLabel.text = String(components.minute) secondsLabel.text = String(components.second) 
</div
 
 
 
 
0
 
vote

これは、Swift 4バージョンの Chris Byatt の答えも遊び場に優しい: <コード> params[:toy]16

 

Here's a Swift 4 version of Chris Byatt's answer that is also playground-friendly:

import UIKit  let calendar = Calendar.current let now = Date() let futureDate = Date.distantFuture  let components = calendar.dateComponents([.day, .hour, .minute, .second], from: now, to: futureDate)  let daysLabel = UILabel() let hoursLabel = UILabel() let minutesLabel = UILabel() let secondsLabel = UILabel()  daysLabel.text = String(describing: components.day) hoursLabel.text = String(describing: components.hour) minutesLabel.text = String(describing: components.minute) secondsLabel.text = String(describing: components.second)  print(components) // day: 723942 hour: 23 minute: 56 second: 0 isLeapMonth: false  // Bonus: here's an easy way to print grammatically correct labels based on numbers if let seconds = components.second {     let labelText = "(seconds) (seconds == 1 ? "second" : "seconds")"     print(labelText) // 0 seconds, 1 second, 2 seconds, etc. } 
</div
 
 

関連する質問

0  AVCAMデモでの映像キャプチャを遅らせる  ( Delaying picture capture in avcam demo ) 
AVCAM Demo 、i ' m avcamviewcontroller.mの次の変更を加えることで、実際に撮影されるまでに5秒の遅延を追加しようとしています。 <事前> <コード> - (IBAction)captureStillImage:(id)s...

0  目的C 2分からカウントダウンするタイマーを作るにはどうすればよいですか。  ( Objective c how do i make a timer that counts down from two minutes ) 
私は答えのためにインターネットを捜したが、運がいない。私はを試しました <事前> <コード> - (void)viewDidLoad { [super viewDidLoad]; twoMinTimer = [NSTimer scheduledTimerW...

0  NSTIMER間隔発生コードのスリープコマンドよりも小さい  ( Nstimer interval less than sleep command in fired code ) 
私は繰り返し実行したいですが、それを一時停止して再開する機能を持つコードのスニペットがあります。これを行うために、私はnSTIMERを利用しています。これは必要に応じて停止し始めることができます。 スニペット内で、私は何かを更新するのを待つためにsleepコマ...

1  NSTIMERは1回増加した後に停止します  ( Nstimer stops after incrementing once ) 
私は毎秒ラベルを更新したい NSTimer を持っています。私のコードは:です <事前> <コード> - (IBAction)OnClickEmergencyButton:(id)sender { emergencyAlertTimer = [NSTi...

2  NSImageViewを使用して、迅速な和に複数の画像を表示します  ( Using nsimageview to display multiple images in quick sucession ) 
アプリケーションは、1つのウィンドウにNSIMageViewがある場合があります。ユーザーはファイル/フォルダ(画像だけでなくイメージだけでなく)を画像ビューにドラッグアンドドロップすることができますので、NSImageViewクラスをサブクラス化してそれらの...

0  外部クラスのNSTIMER  ( Nstimer in external class ) 
あなたの助けが必要です。私は、NSINTEGERのプロパティ(タイマの秒)、NSTIMER、およびBOOLのプロパティを持つTimerと呼ばれるObjective-Cクラスがあります(タイマ実行?)。また、マイタイマを制御する方法(START / STOP /...

3  NSTIMERの無効化と再作成の問題  ( Problems invalidating re creating nstimers ) 
起動に問題があります&amp; NSTIMERSを停止します。ドキュメントは、タイマーが[Timer Invalidate]によって停止していると言っています。 私はそのようなとして宣言されたタイマーオブジェクトを持っています <事前> <コード> .h NS...

2  NSTHREAD / NSRUNLOOPでNSTIMERを実行して管理する  ( Running and managing nstimer in different nsthread nsrunloop ) 
Interface BuilderでGUIを設計して、Cocoaアプリケーションを書いています。 UIをブロックせずにバックグラウンドアクティビティ(定期的な間隔で)スケジュールする必要があるため、このように別のスレッドで実行します。 <事前> <コード> ...

0  特定の数の火災後にNSTIMER間隔を変更します  ( Change nstimer interval after a certain number of fires ) 
次のコードでは、<コード> af13 <事前> <コード> static_assert4 ...

0  NSTIMER iPhone質問  ( Nstimer iphone question ) 
私は私の質問に対する同様の答えを見ましたが、私はそれを明確にするだけです。アプリケーションのニーズは、アプリケーションがアクティブでない場合でも発生するイベントを送信します。 NSTIMERを使って行われることはできないと思います。私の質問は、アプリケーション...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有