2017-01-03 9 views
0

に、私は以下を使用する場合、私はnil文字列をバック取得しています:形式の日付文字列を変換する:「2017年1月3日16:50:00.0」NSDate

NSString *formatString = @"yyyy-MM-dd HH:mm:SS.Z"; 
    NSString *dateString = @"2017-01-03 16:50:00.0"; 

    NSDateFormatter *newDateFormatter = [[NSDateFormatter alloc] init]; 
    [newDateFormatter setDateFormat:formatString]; 
    [newDateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; 
    [newDateFormatter setLocale:[NSLocale autoupdatingCurrentLocale]]; 

    NSDate *newDate = [newDateFormatter dateFromString: dateString]; 

私は私のログ出力をする場合、私はnewDateFormatterではないが、nilnewDateとなる。私は間違って何をしていますか?

+0

幸運だった:) – Hackerman

+0

あなたがたDateFormatでstuckedされている場合日からフォーマッタと.0から.Zを削除:あなたはどの見つけるまでそれをカットあなたのフォーマットの一部が間違っています。たとえば 'yyyy-MM-dd HH:mm:SS'と' 2017-01-03 16:50:00'の作業(ただし、 'ss'でなければなりません。' 00'を '33'で置き換えると、それで、それは "Z"の部分です.iOSのDateFormatのドキュメントはhttp://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns Youです。私の推測では、=> 'yyyy-MM-1 'というのは、' 'Z''と' '0''をtimeZoneとして翻訳することができないということです。 dd HH:mm:ss.SSS' – Larme

答えて

1

私はそれがうまく働いたとnewDate値はそれで2017-01-03 16:50:00 UTC

+0

この提案をお寄せいただきありがとうございますが、私が入力を制御できない場合は、 '.01'を削除することは役に立ちません。また、私は解決策がないと確信していません。私が見ているフォーマット – helloB

+0

'2017-01-03 16:50:33'で試してみると、正しく動作せず、00では33の代わりに秒が与えられます。 – Larme

関連する問題