9

私は多数のタイムスタンプ変換を見つけましたが、それらはすべて機能しますが、コードを日付のテキスト形式にすると、常に 4 か月先になります。

これは、現在の曜日、日付、時刻を取得しています。このように設定したのは、DateTime ピッカーで日を選択したためです。これは、今日の日付を取得するための私の viewDidLoad です。

NSDate *myDate = [[NSDate alloc] init];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"cccc, MMMM dd, YYYY, hh:mm aa"];
NSString *prettyVersion = [dateFormat stringFromDate:myDate];
date.text = prettyVersion;

ここで、prettyVersion を timeIntervalSince1970 に変換するタイムスタンプ変換が行われます

NSDate *startdates = [dateFormat dateFromString:prettyVersion];
NSLog(@"Timestamp %0.0f",[startdates timeIntervalSince1970]);

NSLog は「タイムスタンプ 1356317580」を出力します。変換すると、2012 年 12 月 24 日月曜日 02:53:00 GMT になります。

今、私はこれを行うことができます

          NSLog(@"Timestamp2  %0.0f",[myDate timeIntervalSince1970]);

正しいタイムスタンプを取得します。

それで、私はどこを台無しにしていますか。

4

1 に答える 1

7

この質問はすでにここで回答されています: NSDateFormatter dateFromString が間違った日付を返します

しかし、その要点は、「YYYY」の代わりに「yyyy」を使用する必要がある日付dateFormatにあります。

アップルのドキュメントから:

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

[dateFormat setDateFormat:@"cccc, MMMM dd, yyyy, hh:mm aa"];

そして、私にとっては、「2013 年 9 月 15 日日曜日、午後 7 時 24 分」という形式になりました。これは、テストのためにこれを実行したときの状態です。

于 2013-09-16T02:28:11.980 に答える