1

これはおそらく簡単な解決策ですが、NSDate の変更を深夜以降に遅らせる方法を知っている人はいますか? どんな洞察も本当に役に立ちます、ありがとう!

編集: 現在、この方法で日付を取得し、その日に基づいた場所のデータを表示しています。しかし、NSDate が論理的に機能することになっているように、真夜中に翌日に切り替わります。日付を午前 12 時ではなく午前 3 時に変更したい。

NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"EEEE"];
today = [f stringFromDate:[NSDate date]];

NSDate を使用する代わりに時間を使用する必要がありますか? 私はiOSに少し慣れていないので、洞察が役に立ちます。すでにご回答いただきありがとうございます。

4

1 に答える 1

2

なぜ「間違った」曜日名を表示したいのか、私にはまだ理解できませんが、次のコードは希望どおりに動作するはずです。これは、タスクを達成するためのさまざまな方法の 1 つにすぎません。

日付を「日付コンポーネント:」に変換します。

NSCalendar *cal = [NSCalendar currentCalendar];
NSUInteger unitFlags = NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit;
NSDateComponents *comp = [cal components:unitFlags fromDate:[NSDate date]];

必要に応じて 1 日を引きます。

if (comp.hour < 3) {
    comp.day -= 1;
}

調整されたコンポーネントを最新の状態に戻す:

NSDate *adjustedDate = [cal dateFromComponents:comp];

調整された日付を使用する元のコード:

NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"EEEE"];
NSString *today = [f stringFromDate:adjustedDate];
于 2013-11-03T16:35:19.900 に答える