1

私はすべてを読みましたが、私の問題を解決するものは何もNSDateありません。NSDateFormatter現在の日付を取得し、NSDateオブジェクトでこの日付をモントする必要がありますが、これを行うと、私の時間は常に+2時間になります。私はそのようなことをしています:

NSDateFormatter * dateformatter = [[NSDateFormatter alloc]init];
[dateformatter setLocale:[NSLocale currentLocale]];
[dateformatter setDateFormat:@"yyyy-mm-dd HH:mm:ss"];
//NSTimeZone* localTimeZone = [NSTimeZone localTimeZone];
//NSLog(@"timezone local = %@",localTimeZone);
//[NSTimeZone timeZoneWithAbbreviation:@"BRST"];
NSString * current = [dateformatter stringFromDate:[NSDate date]];
NSLog(@"current = %@",current); // Cool this is my current date!

NSDate *thedate = [dateformatter dateFromString:current]; 
NSLog(@"date = %@",thedate);// NO! my hours is wrong

現在の日付をに追加する必要があります。また、文字列を使用して(メソッドを使用して)NSDateを追加する必要があります。文字列の例:2013-01-2117:05:17。NSDateを返すメソッドでこの文字列を渡すと、NSDateを出力し、この間違った日付を取得します:2013-01-2119:05:17+0000。NSDatestringFromDatestringFromDate

ただの履歴書:

NSDateに現在の日付を追加する必要があり、 2013-01-2117:05:17NSDateのように追加する必要もあります。NSString私の現在のローカルはブラジル/サンパウロで、NSTimerZoneの略語はBRSTです。

4

2 に答える 2

1

の代わりにdateformatter使用するからです。コード内で次のように変更します。HHhh

[dateformatter setDateFormat:@"yyyy-mm-dd hh:mm:ss"];

あなたはここでこのトピックに関する情報を探すことができます:リンク

yyyyを使用して年コンポーネントを指定します。よくある間違いはYYYYを使用することです。yyyyは暦年を指定し、YYYYはISO年-週暦で使用される(「年の週」の)年を指定します。ほとんどの場合、yyyyとYYYYは同じ数になりますが、異なる場合があります。通常、暦年を使用する必要があります。

于 2013-02-14T17:29:42.103 に答える
1

theDate正解です。別のタイムゾーン(+0000)で表示するだけです。

NSDateオブジェクトは、タイムゾーンについて何も知りません。しかし、NSDateFormatterオブジェクトは知っています。デフォルトでは、NSDateFormatterは現在のタイムゾーン(ユーザーがOS設定で設定したもの)を使用します。

文字列を作成して表示すると、タイムゾーンBRST(-0200):2013-01-2117:05:17に表示されます。次に、この文字列から日付を作成すると、日付フォーマッタはそれをBRSTタイムゾーンの日付として再び扱います。ただし、生のNSDateオブジェクトを表示すると、日付は+0000タイムゾーンで表示されます:2013-01-21 19:05:17 +0000、これはBRSTでは17:05:17です。

于 2013-02-14T21:09:26.340 に答える