GMT時間修飾子なしでTimeZoneを使用してNSDateFormatterを使用してNSDateをNSSTRINGに変換します
-
02-10-2019 - |
質問
したがって、私は私のnsdateFormatterを初期化しています:
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss z"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:date];
dateString
今です:
Thu, 29 Jul 2010 14:58:42 GMT+00:00
「+00:00」を取り除きたい
私は推測しています http://unicode.org/reports/tr35/tr35-6.html#time_zone_fallback ローカリゼーションの問題があるかもしれません。 「+00:00」を手動で削除することで、今これを回避していますが、それは理想的ではありません。
編集
私はnstimezoneを作成するためにいくつかの新しい方法を試しましたが、どちらも同じものを生成しました dateString
:
[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
解決
タイムゾーンを表示したくない場合は、フォーマット文字列からトレーリング「Z」文字を削除します。
編集
一方、TimeZoneの名前を表示するだけの場合は、「Z」大文字を作成してください。 ((編集:名前付きTimeZoneの 'z'小文字を残します。つまり、-0800の大文字「Z」)))
編集
小文字「Z」は他のすべてのタイムゾーンで正常に機能しますが、残念ながらGMTは特別なケースです。したがって、最も簡単なことは、「z」を省略し、フォーマットされた日付に「GMT」を追加することです。
他のヒント
受け入れられた答えにはタイプミスがありました。
一方、TimeZoneの名前を表示するだけの場合は、「Z」大文字を作成してください。
名前付きTimeZoneの「Z」小文字、つまりPST、および大文字「Z」を-0800のままにしておきます
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMMM dd, yyyy (EEEE) HH:mm:ss z Z"];
NSDate *now = [NSDate date];
NSString *nsstr = [format stringFromDate:now];
// 2013年1月23日(水曜日)12:33:46 PST -0800
所属していません StackOverflow