1

これから日付を変換しようとしています:

2012-06-26 12:00:00 +0000

これに:

Jun 26, 2012 12:00:00 AM

このコードを使用すると、動作します:

NSString *inputString = @"2012-06-25 12:00:00 +0000";

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];//input

    NSDate *date = [formatter dateFromString:inputString];

    [formatter setDateFormat:@"MMM dd, yyyy hh:mm:ss a"];
    NSString *outputString = [formatter stringFromDate:date];

    NSLog(@"Output Date is: %@" , outputString);

印刷された日付は正しく次のとおりです。Jun 26, 2012 12:00:00 AM

ただし、日付をハードコードせずに関数を使用して取得すると、事態は非常に奇妙になります。コード :

    NSString *inputString2 = [self.selectedDate description]; 
    NSLog(@"%@",inputString2);

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];//input

    NSDate *date = [formatter dateFromString:inputString2];

    [formatter setDateFormat:@"MMM dd, yyyy hh:mm:ss a"];
    NSString *outputString = [formatter stringFromDate:date];

    NSLog(@"Output Date is: %@" , outputString);

コードの先頭に inpuString2 変数を出力すると、関数によって日付が正しく配信されていることを確認するためだけに、次のようになります2012-06-25 12:00:00 +0000。これは正しい日付です。しかし、今では印刷時の出力日付はゼロです!!

何か案は??これはどのように可能ですか??

4

2 に答える 2

3

フォーマッタの日付フォーマット文字列

あなたが持っている

[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];

代わりに試す

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

注: HHは hh ではなく、Zは z ではありません。

RE: 2 番目のフォーマッタ文字列 - これを次のように変更できます

 [formatter setDateFormat:@"MMM dd, yyyy HH:mm:ss a"];

(しかし、あなたはnilについて尋ねているだけだと思いました)

于 2012-06-25T14:25:11.930 に答える
0

selectedDate日付がであると想定していますNSDate。変換する代わりに、次を使用します

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy hh:mm:ss a"];
NSString *outputString = [formatter stringFromDate:self.selectedDate];
NSLog(@"Output Date is: %@" , outputString);

これはあなたの質問に答えないかもしれませんが、正しい日付を与えるはずです

于 2012-06-25T14:25:16.267 に答える