答えて
NSDateクラスは、トリックを行う方法のtimeIntervalSinceDateを持っていることをすべきではないのに役立ちます願っています。
NSTimeInterval secondsBetween = [firstDate timeIntervalSinceDate:secondDate];
NSTimeIntervalは、2回の間の秒数を表す倍数です。
それから、秒を時間と分に変えるためにあなた自身の計算をしなければなりません。その後、それらの数字を文字列に変換する必要があります。それは些細なことだが、それは多くなる。私はこれを行うユーティリティクラスを作成し、それを便利にすることをお勧めします。 – TechZen
大丈夫です!今私は秒を持っているので、私は3600を分けることになります。そして、私は1546521531を得ます。 私に何かヒントを教えてもらえますか? – user134282
ここに私の迅速なソリューションです:
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"HH:mm"];
NSDate *date1 = [df dateFromString:@"14:10"];
NSDate *date2 = [df dateFromString:@"18:09"];
NSTimeInterval interval = [date2 timeIntervalSinceDate:date1];
int hours = (int)interval/3600; // integer division to get the hours part
int minutes = (interval - (hours*3600))/60; // interval minus hours part (in seconds) divided by 60 yields minutes
NSString *timeDiff = [NSString stringWithFormat:@"%d:%02d", hours, minutes];
ありがとう!コンパイラが私にinitWithDateFormatが存在しないというエラーを返します... – user134282
申し訳ありませんが、私はMac OS SDKでそれを書いています。 iPhone SDK用に修正されました。 – amrox
すてきなコード:)ありがとう。 – user134282
は、手でこれを計算NSCalendar
を見てする必要はありません。あなたは今NSDateComponentsとして時間と分を持っていると[components hour]
と[components minute]
などのNSIntegers
としてそれらにアクセスすることができ
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;
NSDateComponents *components = [gregorianCalendar components:unitFlags
fromDate:firstDate
toDate:otherDate
options:0];
[gregorianCalendar release];
:あなたは、2つの日付の間の時間と分を取得したい場合は、このようなものを使用します。これはまた、何日もの間、閏年と他の楽しいもののために働くでしょう。
NSString *duration = [self calculateDuration:oldTime secondDate:currentTime];
- (NSString *)calculateDuration:(NSDate *)oldTime secondDate:(NSDate *)currentTime
{
NSDate *date1 = oldTime;
NSDate *date2 = currentTime;
NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];
int hh = secondsBetween/(60*60);
double rem = fmod(secondsBetween, (60*60));
int mm = rem/60;
rem = fmod(rem, 60);
int ss = rem;
NSString *str = [NSString stringWithFormat:@"%02d:%02d:%02d",hh,mm,ss];
return str;
}
これは私のために働く..ありがとうございました。 。 。 – iHart
どのように違いを提示しますか? NSString、NSNumber、int、浮動小数点数、別のNSDate? – Eimantas
をNSStringとして返します。 – user134282