電話カレンダーが非ゼラコリ人の場合、今日の日付をグレゴリオ形式で取得する方法は?

StackOverflow https://stackoverflow.com/questions/6355405

  •  28-10-2019
  •  | 
  •  

質問

NSDate *now = [[NSDate alloc] init];  

現在の日付を与えます。

ただし、電話カレンダーがグレゴリオでない場合(エミュレータにも日本人と仏教徒がいます)、現在の日付はグレゴリオではありません。

現在の問題は、グレゴリオの日付に変換する方法、または最初からグレゴリオの形式であることを確認する方法です。これは、一部のサーバー通信にとって重要です。

ありがとうございました!

役に立ちましたか?

解決

NSDATEは、単に時点を表すだけで、それ自体に形式はありません。

nsdateを文字列にフォーマットするには、nsdateformatterを使用する必要があります。カレンダープロパティがあり、このプロパティをグレゴリオカレンダーのインスタンスに設定すると、出力形式はグレゴリオスタイルと一致します。

NSDate *now = [NSDate date];

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setCalendar:gregorianCalendar];
[formatter setDateStyle:NSDateFormatterFullStyle];
[formatter setTimeStyle:NSDateFormatterFullStyle];

NSString *formattedDate = [formatter stringFromDate:now];

NSLog(@"%@", formattedDate);

[gregorianCalendar release];
[formatter release];

他のヒント

実際に選ばれた答えは、それらを比較することはできません。私のプロジェクトにはディスプレイのみで十分ではありません。

ついに、CurrentDate-> Gregoriandateを隠している(NSDate)Covert(NSDate)Covert(NSDATE)を考え出し、それらのNSDATEを比較できます。

NSDatesは一時的に使用する必要があることを忘れないでください(カレンダーでは添付しません)

    NSDate* currentDate = [NSDate date];

    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *gregorianComponents = [gregorianCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:currentDate];

    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setDay:[gregorianComponents day]];
    [comps setMonth:[gregorianComponents month]];
    [comps setYear:[gregorianComponents year]];
    [comps setHour:[gregorianComponents hour]];
    [comps setMinute:[gregorianComponents minute]];
    [comps setSecond:[gregorianComponents second]];


    NSCalendar *currentCalendar = [NSCalendar autoupdatingCurrentCalendar];
    NSDate *today = [currentCalendar dateFromComponents:comps];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top