3

現在の GMT 時刻を取得しました - 2013-05-15 08:55 AM

私の現在の現地時間は - 2013-05-15 02:06 PM で、タイムゾーンは - Asia/Kolkata です

このコードで上記のGMTを現地時間に変換しようとしました

   NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"Asia/Kolkata"];
   [dateFormatter setTimeZone:sourceTimeZone];


      // timeStamp - is the above GMT time

   NSDate *dateFromString = [dateFormatter dateFromString:timeStamp];
    NSLog(@"local time is %@",dateFromString);

しかし、これにより、 2013-05-14 02:06 PM の代わりに- 2013-05-14 19:04:00 +0000と間違った時間が与えられます

なぜこれが起こるのですか?これをクリアするのを手伝ってください。事前に感謝します

4

5 に答える 5

7

何も問題はありません。インスタンスにはタイムゾーンがありません (ただし、日付の説明NSDateのタイムゾーンで示されるように、常に GMT です)。+0000

コードで dateformatter に伝えていることは、解析したい日付のタイムゾーンは ですが、そうでAsia/KolkataあってほしいということですGMT

NSDate最初に、指定したように、タイム ゾーンを正しいタイム ゾーンに設定して、入力日付文字列からオブジェクトを作成する必要がありGMTます。

NSTimeZone *gmtTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:sourceTimeZone];
NSDate *dateFromString = [dateFormatter dateFromString:timeStamp];
NSLog(@"Input date as GMT: %@",dateFromString);

次に、日付を文字列として表示する場合は、次を使用します。

NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"Asia/Kolkata"];
[dateFormatter setTimeZone:sourceTimeZone];
NSString *dateRepresentation = [dateFormatter stringFromDate:dateFromString];
NSLog(@"Date formated with local time zone: %@",dateRepresentation);
于 2013-05-15T08:42:13.380 に答える
0
NSLog(@"local time is %@",[dateFormatter stringFromDate: dateFromString]);
于 2013-05-15T08:43:13.413 に答える
0

timeZoneWithNameを使用する

NSDate *date=[[NSDate alloc]init];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Kolkata"]];
[timeFormat setDateFormat:@"HH:mm"];
NSString *dateStr=[timeFormat stringFromDate:date];
于 2013-05-15T09:02:06.393 に答える