1

PDT の場合は、「-0700」が必要です。

過去の日付を取得して、何かがどれくらい前に起こったかを判断しています。

NSDate *then = [NSDate dateWithString:@"1976-04-01 12:34:56 -0700"]; // Note the hard-coded time zone at the end

別の場所で日付文字列を作成しますが、ローカル タイム ゾーンにアクセスする方法がわかりません。

Apple Dates and Times Programming Topics for Cocoa と NSTimeZone および NSDate Class References を読みましたが、情報をまとめるのは難しすぎます。使用方法を示すためだけに、数行のコードを実際に使用できます。

更新:これに苦労している間、私はコマンドラインテンプレートを使用してコードを書いていたので、すぐに試すことができました. 以前のコードを iPhone で試してみたところ、NSDate が '+dateWithString:' に応答しない場合があります。Apple がそのような基本クラスを変更することを誰が知っていたのか、混乱を招いたら申し訳ありません。

4

3 に答える 3

4

NSDateFormatter文字列から NSDate を構築するために使用します。

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

NSDate *formatterDate;
formatterDate = [inputFormatter dateFromString:@"1976-04-01 12:34:56 -0700"];

NSString *dateString = [inputFormatter stringFromDate:formatterDate];

NSLog(@"date:%@", dateString);

このようにして、文字列で指定された日付など、文字列から現地時間を取得します。

"1976-04-01 12:34:56 -0700"

タイムゾーンは -0700です(私はタイムゾーン GMT +1000 です)ので、次のようになります。

2009-11-17 22:13:46.480 cmdline[10593:903] 日付:1976-04-02 05:34:56 +1000

于 2009-11-17T11:08:31.327 に答える
2

タイム ゾーン オフセットは、世界の大部分 (夏時間/夏時間を使用する地域) の日付に依存します。

唯一の正しい方法は、日付とタイムゾーンを合わせて文字列全体を生成することです。これには NSDateFormatter を使用します。

于 2009-06-27T08:55:14.057 に答える
-1

最善の方法は、単純なカレンダー フォーマッタを使用することです。

NSCalendarDate * date = [NSCalendarDate calendarDate];
[date setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"PDT"]];
NSLog([date descriptionWithCalendarFormat:@"%z"]);

「-0700」を出力します

または、システムの現在のタイム ゾーンが必要な場合は、2 行目を省略します (どちらを求めているか不明)。

于 2009-06-27T08:37:14.077 に答える