0

NSDateアプリケーションでコンセプトを使用しています。私のクラスの 1 つで[NSDate date]、日付インスタンスに を設定し、次のクラスで使用します。それは私にとっては完璧に機能しますが、その日付を使用すると、時間の5.30時間前になるため、aを使用しNSDateFormatterて変更しましたが、null応答が返されました。

    NSLog(@"update date= %@",pullToRefreshManager_.pullToRefreshView.lastUpdateDate);
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    [dateFormat setTimeZone:timeZone];
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *str=[NSString stringWithFormat:@"%@",pullToRefreshManager_.pullToRefreshView.lastUpdateDate];
    NSLog(@"Str== %@",str);
    NSDate *date = [dateFormat dateFromString:[NSString stringWithFormat:@"%@",str]];
    NSLog(@"exact date= %@",date);

コンソールは次のように出力されます

update date= 2013-08-28 07:34:23 +0000 
  Str== 2013-08-28 07:34:23 +0000
 exact date= (null)
4

4 に答える 4

0

NSDate は常に GMT として提供されます。したがって、必要な timeZone に従って日付をフォーマットする必要があります。デバイスの timeZOne を設定するか、Calendar を使用して timeZOne を設定できます。 更新: この日付形式の代わりにこの日付形式を使用してください

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
于 2013-08-28T07:57:13.817 に答える
0

「pullToRefreshManager_.pullToRefreshView.lastUpdateDate」から取得している日付は、NSDateFormatter とは異なる日付形式である可能性があるため、null を取得しています。

文字列から日付を取得するには、日付文字列と NSDateFormatter の同じ日付形式が必要です。

このコードを試してください:

NSDateFormatter *formatter1=[[NSDateFormatter alloc]init];
[formatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
formatter1.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSString *StrDate =[formatter1 stringFromDate:yourDate];
NSLog(@"String Date : %@",StrSunday);

NSDate *date = [formatter1 dateFromString:StrDate];
NSLog(@"Date : %@",date);
于 2013-08-28T08:49:07.910 に答える
0

5行目

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss +0000"];

および8行目

NSDate *date = [dateFormat dateFromString:str];
于 2013-08-28T08:00:35.793 に答える
0

strの値は?

コードのこの部分を試しました

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormat setTimeZone:timeZone];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLog(@"exact date= %@",[dateFormat stringFromDate:[NSDate date]]);

そしてそれは日付をよく示しています。他の行のいずれかで何かが null でなければなりません。

于 2013-08-28T08:50:30.840 に答える