0

日時形式の文字列があります。例:2013-05-28 10:56:31

この文字列を iPhone のデフォルト形式にフォーマットするにはどうすればよいですか? (iPhoneの設定で)

そして、GMTプラスタイムシフトオフセットでdatetimeを設定する方法(iPhoneでも設定)。例: GMT+1

これは可能ですか?

4

2 に答える 2

6

これを実現するには、NSDateFormatter を使用できます。

NSString *dateString = @"2013-05-28 10:56:31";

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

//Special Locale for fixed dateStrings
NSLocale *locale = [[NSLocale alloc]initWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:locale];

//Assuming the dateString is in GMT+00:00
//formatter by default would be set to local timezone 
NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
[formatter setTimeZone:timeZone];

[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSDate *date =[formatter dateFromString:dateString];

//After forming the date set local time zone to formatter    
NSTimeZone *localTimeZone = [NSTimeZone localTimeZone];
[formatter setTimeZone:localTimeZone];

NSString *newTimeZoneDateString = [formatter stringFromDate:date];
NSLog(@"%@",newTimeZoneDateString);

dateFormatter を使用するためのいくつかの指針。

  1. 文字列にタイムゾーンに関する情報が含まれておらず、デバイスと同じタイムゾーンにない場合は、常にタイムゾーンを dateFormatter に設定します。
  2. 固定形式の dateStrings の場合、常にen_US_POSIXロケールを使用します
  3. コンソールにログインしたときの NSDate は、常に GMT+00:00 で表示されます。NSDate にはタイムゾーンがありません。異なるタイムゾーンで表される場合にのみ異なります。
  4. 新しいタイムゾーンを formatter に設定して、形成された日付を任意のタイムゾーンに変換します。フォーマッターは、この新しいタイムゾーンでどのように表現されるかを再計算するだけで、日付を変更することはありません。
于 2013-05-28T11:29:13.353 に答える
0

NSDateFormatterに関するドキュメントを参照してください。具体的dateFromStringには、「受信者の現在の設定を使用して解釈された文字列の日付表現」を返します。

于 2013-05-28T11:29:23.817 に答える