'da günlere, dakikalara ve saatlere birkaç saniye dönüştürün Objektif c'de, bir tamsayı (saniyeleri temsil eden) günlere, dakikalara, saatlere nasıl dönüştürebilirim?Obj-c
Teşekkürler!
'da günlere, dakikalara ve saatlere birkaç saniye dönüştürün Objektif c'de, bir tamsayı (saniyeleri temsil eden) günlere, dakikalara, saatlere nasıl dönüştürebilirim?Obj-c
Teşekkürler!
Bu durumda, yalnızca bölmeniz gerekir. Böyle 1983'te 19 Ocak 3 de sonra on milyon saniye içinde gün sayısı olarak daha sofistike tarih hesaplamaları için
days = num_seconds/(60 * 60 * 24);
num_seconds -= days * (60 * 60 * 24);
hours = num_seconds/(60 * 60);
num_seconds -= hours * (60 * 60);
minutes = num_seconds/60;
, sen NSDateComponents birlikte NSCalendar sınıfını kullanırsınız. Apple'ın tarih ve saat programlama rehberi burada size yardımcı olur.
bu deneyin
int forHours = seconds/3600,
remainder = seconds % 3600,
forMinutes = remainder/60,
forSeconds = remainder % 60;
ve aynı prosedür kaynaklı
Bu daha temiz ve daha özlü bir yoldur. –
İyi yöntem.saniye tamsayı değilse, o zaman ** geri kalan = saniye% 3600 ** gibi işlemleri yapamayız. – Gangadhar
Soru aslında bir tamsayı olduğunu belirtti. –
kullanın yerleşik fonksiyon strftime izleyerek günler, haftalar, aylar ve yıllar olarak daha fazla bilgi almak için kullanabilirsiniz() :, dokümanına Apple tarafından tavsiye olarak
static char timestr[80];
char * HHMMSS (time_t secs)
{
struct tm ts;
ts = *localtime(&secs);
strftime(timestr, sizeof(timestr), "%a %b %d %H:%M:%S %Y %Z", &ts); // "Mon May 1, 2012 hh:mm:ss zzz"
return timestr;
}
amaç-c en çok tercih edilen şekilde, bu olabilir.
NSDate *startDate = [NSDate date];
NSDate *endDate = [NSDate dateWithTimeInterval:(365*24*60*60*3+24*60*60*129) sinceDate:startDate];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags
fromDate:startDate
toDate:endDate options:0];
NSInteger years = [components year];
NSInteger months = [components month];
NSInteger days = [components day];
NSLog(@"years = %ld months = %ld days = %ld",years,months,days);
, tamsayı "tanımsız" olacaktır unitFlags tanımlanmıyo bileşenleri almak için değil emin olun.
, hesaplama, DTS veya "startDate" ile "endDate" arasında herhangi bir şeye düşecek şekilde gerçekleştirilirse bu kırılmayacak mıdır? –
Bu eski bir yazı olduğunu biliyorum ama yine de paylaşmak istedim. Aşağıdaki kod, kullandığım koddur.
int seconds = (totalSeconds % 60);
int minutes = (totalSeconds % 3600)/60;
int hours = (totalSeconds % 86400)/3600;
int days = (totalSeconds % (86400 * 30))/86400;
İlk satır - Bir kaç saniye içinde saniye sayısına bölünürken kalan süreyi saniye olarak alırız.
İkinci satır - Bir saat içinde saniye sayısına bölünerek kalan süreyi saniye olarak alırız. Sonra bunu bir dakika içinde saniye olarak böleriz.
Üçüncü satır - Bir saniyedeki saniye sayısına bölünerek kalan süreyi saniye olarak alırız. Sonra bunu bir saat içinde saniye sayısına böleriz.
Dördüncü satır - Bir aydaki saniye sayısına bölünerek ikinci kalanını alırız. Sonra bunu bir günde saniyelerle bölüyoruz. Biz sadece ... Gün aşağıdaki
int days = totalSeconds/86400;
kullanabilirsiniz Ama biz yukarıda çizgiyi kullanılan ve üzerinde devam etmek ve biz 1 ay ve 30 gün ile sona ereceğini ay olsun istiyorsa biz sadece almak istediğinde 1 ay.
Xcode'ta bir Playground açın ve deneyin.
Bu, en iyi cevabı – Clint
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date dateObj1=null;
Date dateObj2=null;
try {
// String format = "MM/dd/yyyy hh:mm:ss";
dateObj1 = sdf.parse(Appconstant.One_One_time);
dateObj2 = sdf.parse(Appconstant.One_Two_time);
Log.e(TAG, "dateObj12" + dateObj1.toString() + "---" + dateObj2.toString());
DecimalFormat crunchifyFormatter = new DecimalFormat("###,###");
long diff = dateObj2.getTime() - dateObj1.getTime();
/*int diffDays = (int) (diff/(24 * 60 * 60 * 1000));
System.out.println("difference between days: " + diffDays);
int diffhours = (int) (diff/(60 * 60 * 1000));
System.out.println("difference between hours: "
+ crunchifyFormatter.format(diffhours));
int diffmin = (int) (diff/(60 * 1000));
System.out.println("difference between minutes: "
+ crunchifyFormatter.format(diffmin));*/
int diffsec = (int) (diff/(1000));
System.out.println("difference between seconds:"
+ crunchifyFormatter.format(diffsec));
kodunun yanına .... – Vela
Her ikisi de 32 bit & 64 bit ile uyumlu bir küçük değişiklik. NSInteger
'u kullanarak, sistem otomatik olarak 32/64 bit üzerinde int veya long basing'e dönecektir.Eğer günler, haftalar, aylar, yıllar dönüştürmek aynı arada
NSInteger seconds = 10000;
NSInteger remainder = seconds % 3600;
NSInteger hours = seconds/3600;
NSInteger minutes = remainder/60;
NSInteger forSeconds = remainder % 60;
yapıyor deneyin:
x=int(input("enter a positive integer: "))
sec = int(x % 60);
minu =int((x % 3600)/60);
ho =int((x % 86400)/3600);
days =int(x/(60 * 60 * 24));
print(int(days),"days", ho,"hours", minu , "minutes" , sec ,"seconds")
Toplamda gelen gün, saat, dakika ve saniye alacak saniye (self.secondsLeft)
days = self.secondsLeft/86400;
hours = (self.secondsLeft %86400)/3600;
minutes = (self.secondsLeft % 3600)/60;
seconds = (self.secondsLeft %3600) % 60;
Kod ......
[NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
-(void) updateCountdown {
int days,hours,minutes,seconds;
self.secondsLeft--;
days = self.secondsLeft/86400;
hours = (self.secondsLeft %86400)/3600;
minutes = (self.secondsLeft % 3600)/60;
seconds = (self.secondsLeft %3600) % 60;
NSLog(@"Time Remaining =%@",[NSString stringWithFormat:@"%02d:%02d:%02d:%02d",days, hours, minutes,seconds]);
}
Bu (sadece saniye toplam miktarını ve bunların her birinin arasında bir ilişki kullanılarak) saniye, dakika ve saat saniye dönüştürmek için zaman algoritması: burada
int S = totalSeconds % BaseSMH
int M = ((totalSeconds - totalSeconds % BaseSMH) % BaseSMH^2)/BaseSMH
int H = (totalSeconds - totalSeconds % BaseSMH - ((totalSeconds - totalSeconds % BaseSMH) % BaseSMH^2))/BaseSMH^2
ve bunun zaman açıklama şu : ss: dd: SS = 02:20:10 => totalseconds = * 3600 + 20 * 60 + 10 = 7200 + 1200 + 10 = 8410
2 taban
test süresi saniye dönüştürüldü arasında saniye -> dakikalar ve dakikalar -> saatler 60'tır (saniye cinsinden -> saat 60^2 = 3600'dür).
int totalSeconds = 8410
const int BaseSMH = 60
(burada bir değişken ile temsil edilir) Her bir birim
saniye toplam miktarı (saniye olarak ifade edilir), önceki kaldırma birimi saniye ve çalışıyoruz birimi arasındaki ilişki ile bölün hesaplanabilir hesaplamak. (Biz şimdi önceki birimi hesaplanmış ve her hesaplama sonra böyle nasıl görüneceğini ile dakikalar ve saatler hesaplamalarda her üniteyi yerine tüm matematik gibiint S = totalSeconds % BaseSMH
int M = ((totalSeconds - S) % BaseSMH^2)/BaseSMH
int H = (totalSeconds - S - M * BaseSMH)/BaseSMH^2
: Bu, her calulation bu algoritma kullanılarak neye benzediği M hesaplanmasında BaseSMH ile bölünmesi ve H calulation içinde BaseSMH ile çarparak) birbirini iptal unutmayın Bu gibi görünecektir yukarıdan
int S = totalSeconds % BaseSMH
int M = ((totalSeconds - totalSeconds % BaseSMH) % BaseSMH^2)/BaseSMH
int H = (totalSeconds - totalSeconds % BaseSMH - ((totalSeconds - totalSeconds % BaseSMH) % BaseSMH^2))/BaseSMH^2
"totalseconds" ile test ve "BaseSMH":
int S = 8410 % 60
int M = ((8410 - 8410 % 60) % 60^2)/60
int H = (8410 - 8410 % 60 - ((8410 - 8410 % 60) % 60^2))/60^2
hesaplanması S:
int S = 8410 % 60 = 10
hesaplanması M:
int M = ((8410 - 8410 % 60) % 60^2)/60
= ((8410 - 10) % 3600)/60
= (8400 % 3600)/60
= 1200/60
= 20
hesaplanması H:
int H = (8410 - 8410 % 60 - ((8410 - 8410 % 60) % 60^2))/60^2
= (8410 - 10 - ((8410 - 10) % 3600))/3600
= (8400 - (8400 % 3600))/3600
= (8400 - 1200)/3600
= 7200/3600
= 2
Bununla istediğiniz hangisi birim ekleyebilir, sadece ne hesaplamak gerekir ilişki saniyeler ve istediğiniz birim arasındadır. Umarım her adımın açıklamalarını anlıyorsundur. Değilse, sadece sor ve ben daha fazla açıklayabilirim.
Teşekkür ederiz. Bununla birlikte, bazı yöntemlerle inşa edilmiş olacağını umuyordum. – higginbotham
@higginbotham - Size yardımcı olması durumunda bu cevabı doğru olarak işaretlemelisiniz. – Moshe