2016-05-04 14 views
-2

文字列から特定の日付を取得しました NSString * str = @ "2016-05-04 08:42:00 +0000"; これを08:42 AMフォーマットに変換したいと思います。 は、ここに私のコード特定の日付をam/pm形式に変換するにはどうすればいいですか?

NSString *str = @"2016-05-04 08:42:00 +0000";// put here item.TimeStart 

NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init] ; 
[dateFormatter1 setDateFormat:@"EEE, dd MMM YYYY HH:mm:ss VVVV"];// here give the format which you get in TimeStart 

NSDate *date1 = [dateFormatter1 dateFromString: str]; 

dateFormatter1 = [[NSDateFormatter alloc] init] ; 
[dateFormatter1 setDateFormat:@"hh:mm a"]; 

NSString *convertedString = [dateFormatter stringFromDate:date1]; 
NSLog(@"Converted String : %@",convertedString); 

である。しかし、これは変換された文字列にnilを返すです。なぜ ??何か案が??

+1

'dateFormatter1'の' dateFormat'が 'str'の書式と一致しません。デバッグすると、 'date1'がnilであることがわかります。だからあなたの問題は最初の日付フォーマッタ 'dateFormatter1'にあると指摘し、コードの残りの部分は修正するまで無関係です。 – Larme

+0

yeah @Larme date1はnilです。 dateFormatter [dateFormatter1 setDateFormat:@ "EEE、dd MMM YYYY HH:mm:ss VVVV"]は正しいですか? –

+0

Yeahh私はdateformatterを「YYYY-dd-MM HH:mm:ss VVVV」に置き換えたが、ログには2:21 PMが表示されていたのですが、なぜですか? –

答えて

0

タイムゾーンの時間差を0に設定するには、次の行を追加して、実際の時刻を取得してください。次のように

 //Add this line to set the time zone time difference to 0 
     dateFormatter1.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 

これを追加した後、あなたの最終的なコードの行を探します:

NSString *str = @"2016-05-04 08:42:00 +0000"; 

    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init] ; 
    [dateFormatter1 setDateFormat:@"YYYY-dd-MM HH:mm:ss VVVV"]; 

    NSDate *date1 = [dateFormatter1 dateFromString: str]; 

    dateFormatter1 = [[NSDateFormatter alloc] init]; 

    //Add this line to set the time zone time difference to 0 
    dateFormatter1.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 

    [dateFormatter1 setDateFormat:@"hh:mm a"]; 

    NSString *convertedString = [dateFormatter1 stringFromDate:date1]; 
    NSLog(@"Converted String : %@",convertedString); 
+0

は素晴らしい人です! –

+0

@ChelseaShawraありがとう:-) – Microprocessor8085

+0

@ Microprocessor8085ありがとう...ねえ、watchconnectivityで作業アイデアを持っていますか?申し訳ありません、私はもう質問をすることはできません..だから私の尋ねる施設を拒否しました –

0

を我々は2001-02-15T13のような文字列を持っている場合それはあなた

-(NSDate *)calculateDate:(NSString *)getString 
    { 

     NSDateFormatter *Format = [[NSDateFormatter alloc] init]; 
     [Format setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 

     NSDate *aDate = [Format dateFromString:getString]; 

     if(!aDate) 
     { 
      [Format setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss a"]; 
      [Format setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; 
      aDate = [Format dateFromString:getString]; 
     } 

     return aDate; 
    } 

役立ちます。 25:00にフォーマットし、12Hフォーマットにしたい場合は、ローカルを定義するだけです。

関連する問題