2011-01-18 9 views
4

私は日付を使って日付と時刻を取得しようとしていますが、アプリケーションを実行すると、短時間でアプリケーションの時間と日付が実行されます。ラベルに現在の時間を入れてください

NSDate *StrDate = [NSDate date]; 
     NSDateFormatter *Dateformat = [[NSDateFormatter alloc]init]; 
     [Dateformat setDateFormat:@"DD-MM-YYYY"]; 
     NSMutableString *DateStr = [Dateformat stringFromDate:StrDate]; 
     [UserCntrl.timeDisplay setText:DateStr]; 
     [Dateformat setDateFormat:@"HH:MM"]; 
     NSMutableString *timeStr=[Dateformat stringFromDate:StrDate]; 
+0

「{}」エディターコントロールを使用して、問題のコードを適切にフォーマットしてください。 –

+2

2つのこと:(1)コードを再フォーマットしてください。 (2)Objective-Cで大文字にした変数名を使用しないでください( 'StrDate'を' strDate'に変更する、あるいはもっと良いのは 'currentDate'に変更する)。 –

+0

@samまた、回答を受け入れる必要があります。あなたが答えを受け入れるなら、人々はあなたの質問に答えるために時間を費やす方がより喜んでいます。 –

答えて

4

場所でなければなりません 代わりの [Dateformat setDateFormat:@"HH:MM"]; の方法:

[NSTimer scheduledTimerWithTimeInterval:1.0f // 1 second 
    target:self 
    selector:@selector(updateTime:) 
    userInfo:nil 
    repeats:YES]; 

次に、このメソッドをView Controllerに配置します。

- (void) updateTime:(id)sender 
{ 
    NSDate *StrDate = [NSDate date]; 
     NSDateFormatter *Dateformat = [[NSDateFormatter alloc]init]; 
     [Dateformat setDateFormat:@"DD-MM-YYYY HH:mm:SS"]; 
     NSMutableString *DateStr = [Dateformat stringFromDate:StrDate]; 
     [UserCntrl.timeDisplay setText:DateStr]; // or whatever code updates your timer. I didn't check this for bugs. 
} 

これは「updateTime:」メソッドを1秒に1回呼び出して、コントローラを更新します。

0

[NSDate date]は、あなたがそれを呼び出す時のオブジェクトを作成します。日付を更新するには、もう一度呼び出す必要があります。つまり、StrDate = [NSDate date]を実行する必要があります。あなたのメソッドで現在の日付を取得したいときはいつでも。

0

あなたはあなたのコードにバグがあります。それはあなたのUIViewでスケジュールタイマーがショーをやった(またはロードをしました) [Dateformat setTimeFormat:@"HH:MM"];

関連する問題