電話カレンダーが非ゼラコリ人の場合、今日の日付をグレゴリオ形式で取得する方法は?
-
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];
所属していません StackOverflow