1

ローカル通知に次のコードを使用しています

 for (int i=0;i<newBirthDates.count;i++)
{
    NSDate *date =[Formatter1 dateFromString:[newBirthDates objectAtIndex:i ]];
    NSComparisonResult result = [date compare:todaydate];
    if(result == NSOrderedSame)
    {
        UILocalNotification *localNotif = [[UILocalNotification alloc] init];
        localNotif.fireDate = date;
        localNotif.timeZone = [NSTimeZone defaultTimeZone];
        localNotif.alertBody = @"birthdate notification";
        localNotif.alertAction = @"View";

        localNotif.soundName = UILocalNotificationDefaultSoundName;
        localNotif.applicationIconBadgeNumber = 1;
        [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
    }
}
  newBirthdate is array with dates in it
  Formatter1 =MM/dd.

newbrithdateの日付の1つが18/3であるとすると、コンピューターの
日付を17/3と11.59 pmに変更し、1分待って18/3になりますが、通知時刻が表示されません。私のシミュレーターはいつも私のコンピューターの時間と同じです。

4

1 に答える 1

0

書式設定された日付文字列を配列 (MM/dd 形式) に格納し、通知を設定するために日付に変換しています。

簡単なチェックをしてみよう!!

NSDateFormatter *Formatter1 = [[NSDateFormatter alloc]init];
Formatter1.dateFormat =@"MM/dd";

NSDate *today = [NSDate date];// take current date
NSString *initialDateString =[Formatter1 stringFromDate:today]; // formatted date string(in MM/dd)


NSDate *dateFromFormatter = [Formatter1 dateFromString:initialDateString]; // Date from the formatted string(In your case taking from array)
NSString *finalDateString = [Formatter1 stringFromDate:dateFromFormatter];// formatted string from new date

// lets take a look wether both are same
NSLog(@"Initial date string: %@",initialDateString);
NSLog(@"Final date string  : %@",finalDateString);
// Both date strings are same

NSLog(@"Actual date    : %@",today);
NSLog(@"Formatted date : %@",dateFromFormatter);
//But see both dates are entirely different

出力

最初の日付文字列: 03/18
最終日付文字列: 03/18
実際の日付: 2013-03-18 12:15:45 +0000
フォーマットされた日付: 2000-03-17 18:30:00 +0000

では、どのように通知を受け取るのでしょうか??

于 2013-03-18T12:19:49.300 に答える