web-dev-qa-db-ja.com

文字列からNSDateを作成する

次のようなNSStringがあります:@"3/15/2012 9:15 PM"NSDateに変換したいのですが、次のようにしました。

NSString *str =@"3/15/2012 9:15 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"mm/dd/yyyy HH:mm"];
NSDate *date = [formatter dateFromString:];

NSLog(@"%@", date);  // date = null

助けてくれてありがとう、ありがとう。

27
samir

次の解決策を使用してください

NSString *str = @"3/15/2012 9:15 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"MM/dd/yyyy HH:mm a";

NSDate *date = [formatter dateFromString:str];

NSLog(@"%@", date);

編集:申し訳ありませんが、形式は次のようになります。

formatter.dateFormat = @"MM/dd/yyyy hh:mm a";

表示される時間はGMT時間になります。したがって、タイムゾーンを加算または減算すると、午後9時15分になります。

編集:#2

以下のように使用します。あなたも正確な時間を得るでしょう。

NSString *str = @"3/15/2012 9:15 PM";

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

formatter.dateFormat = @"MM/dd/yyyy hh:mm a";

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];

formatter.timeZone = gmt;

NSDate *date = [formatter dateFromString:str];

NSLog(@"%@",date);
59
Ilanchezhian

フォーマッタが間違っています。 NSDateFormatterのドキュメントによると、「MM/dd/yyyy h:mm a」である必要があります。また、日付のフォーマットガイドラインに記載されているロケールを設定することもできます。

固定形式の日付を使用している場合は、最初に日付フォーマッターのロケールを固定形式に適したロケールに設定する必要があります。ほとんどの場合、最適なロケールはen_US_POSIXです。これは、ユーザーとシステムの両方の設定に関係なく、米国英語の結果を生成するように特別に設計されたロケールです。

これを試して:

NSString *str = @"3/15/2012 9:15 AM";
NSLocale *enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setLocale:enUSPOSIXLocale];
[formatter setDateFormat:@"MM/dd/yyyy h:mm a"];
NSDate *date = [formatter dateFromString:str];

NSLog(@"%@",date);

出力:

2012-03-19 12:37:27.531 Untitled[6554:707] 2012-03-15 08:15:00 +0000
1
user111823

うーん-あなたはいくつかの理由で間違っています

  1. nSDateFormatterは厳密であり、厳密ではありません。
  2. strをdateFromStringに指定しませんでした:
NSString* str = @"3/15/2012 9:15 PM";
NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy HH:mm a"];
NSDate* date = [formatter dateFromString:str];


NSLog(@"%@",date);
0
Damo
  NSString *str =@"3/15/2012 9:15 PM";
NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];
   [dateformatter setDateFormat:@"MM/dd/yyyy"];
NSArray *firstSplit = [str componentsSeparatedByString:@" "];
NSDate *dateSelected = [dateformatter dateFromString:[firstSplit objectAtIndex:0]];

    [dateformatter setDateFormat:@"mm:ss"];
NSDate *dateSelected2 = [dateformatter dateFromString:[firstSplit objectAtIndex:1]];
NSLog(@"%@",[dateformatter stringFromDate:dateSelected2]);

NSLog(@"%@",[dateformatter stringFromDate:dateSelected]);
0
Rama Rao