2012-09-14 7 views
11

私は文字列を持っています "2012-09-16 23:59:59 JST" この日付文字列をNSDateに変換したいと思います。NSDate from string

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss Z"]; 
NSDate *capturedStartDate = [dateFormatter dateFromString: @"2012-09-16 23:59:59 JST"]; 
NSLog(@"%@", capturedStartDate); 

しかし、動作しません。それはヌル値を与えます。正しい指定子のためにここに

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

チェック:助けてください..

答えて

31

24時間の時間を利用して、時間指定は、資本のこのようなHにする必要があるしかしhttp://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

、あなたがする必要があります日付フォーマッタのロケールを設定します。

// Set the locale as needed in the formatter (this example uses Japanese) 
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]]; 

全作業コード:

(GMT)において
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"]; 
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]]; 
NSDate *capturedStartDate = [dateFormatter dateFromString: @"2012-09-16 23:59:59 JST"]; 
NSLog(@"Captured Date %@", [capturedStartDate description]); 

出力:

Captured Date 2012-09-16 14:59:59 +0000 
+0

ちょっと@danielbeard、uは、それが正確な日付から9時間の時間差を示すであろう時間GMTを表示すると述べています。文字列から正確な日付を取得する方法.. ?? – NiKKi

+0

日付自体にタイムゾーンはありませんが、上記のNSDateFormatterを設定した 'stringFromDate'を使用してタイムゾーンで文字列表現を取得できます。 – danielbeard

+0

詳細はこちらhttp://stackoverflow.com/questions/1862905/nsdate-convert-date-to-gmt – danielbeard

1
NSString *dateString = @"01-02-2010"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

// this is imporant - we set our input date format to match our input string 
// if format doesn't match you'll get nil from your string, so be careful 

[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 
// end 
dateFromString = [dateFormatter dateFromString:dateString]; 
[dateFormatter release]; 
6
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; 
NSDate *capturedStartDate = [dateFormatter dateFromString: @"2012-09-16 23:59:59 GMT-08:00"]; 
NSLog(@"%@", capturedStartDate); 
+1

これはいつか誰かに役立つかもしれません:Keen.ioタイムスタンプフォーマット '[フォーマッタsetDateFormat:@" yyyy -MM-dd'T'HH:mm:ss.SSS'Z '"];'私はロケールを設定する必要はありませんでした。 –

+0

答えは今日私にとって有用でした;) –