//

Volgende dag selecteren (NSDate)

Volgende dag selecteren (NSDate) discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Hey devvers In mijn app wil ik 1x per dag een bestand downloaden. Dus ik moet op een of andere manier kunnen checken of het ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Zoeken Berichten van vandaag Markeer forums als gelezen
  #1  
Oud 31-07-09, 12:21
SkyTrix's schermafbeelding
SkyTrix SkyTrix is offline
• iOS 5.0 Beta
• 4.3.5
• Besturingssysteem: Mac OS X
 
Geregistreerd: Apr 2009
Berichten: 63
Standaard Volgende dag selecteren (NSDate)

Hey devvers

In mijn app wil ik 1x per dag een bestand downloaden. Dus ik moet op een of andere manier kunnen checken of het de volgende dag na 6u AM is adhv de NSDate die ik opsla van de laatste download..

Ik heb al de documentatie bekeken maar heb niets concreets gevonden.

Iemand een idee?

Bedankt.
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 31-07-09, 13:04
Whacko Whacko is offline
• iOS 7.1.2
• 5.1.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jan 2009
Berichten: 484
Standaard

iets in deze richting zou ik zoeken:

Code:
NSDate *gisteren = [[NSDate alloc] initWithString:@"2009-07-30* 
06:00:00 +0100"];
NSDate * nu = [NSDate date];
if([nu timeIntervalSince:gisteren] > 86400) { // 86400 sec == 1 dag
   // do ya thang
}
let op ik heb het niet getes, maar ff snel aan de hand van de docs gemaakt. dus kan nog foutjes bevatten.
__________________
Software Engineer
iPhone Developer
  #3  
Oud 31-07-09, 13:07
Matisse Matisse is offline
• iOS 5.0 Beta
• 5.0 Beta
• Besturingssysteem: Mac OS X
 
Geregistreerd: Aug 2008
Locatie: Antwerpen
Berichten: 89
Standaard

Code:
NSDate *laatsteDownload; // Laatste download (bewaard in een plist of iets dergelijk)
NSTimeInterval diff = [[NSDate date] timeIntervalSinceDate:laatsteDownload];
if (diff >= 24 * 3600) {
    // Doe iets nuttig
}
Edit: Whacko was me voor
  #4  
Oud 31-07-09, 13:28
SkyTrix's schermafbeelding
SkyTrix SkyTrix is offline
• iOS 5.0 Beta
• 4.3.5
• Besturingssysteem: Mac OS X
 
Geregistreerd: Apr 2009
Berichten: 63
Standaard

@Whacko
Nu heb je de datum zelf ingevuld, enig idee hoe ik mijn opgeslagen datum erin zet maar dan het uur aanpast naar die 6am?

@Matisse
Dat was mij gelukt Maar dat is precies 24 uur, ik zoek de volgende dag na 6u AM.

Laatst gewijzigd door SkyTrix; 31-07-09 om 13:38.
  #5  
Oud 31-07-09, 13:57
Whacko Whacko is offline
• iOS 7.1.2
• 5.1.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jan 2009
Berichten: 484
Standaard

heb al iets beters gevonden:

NSCalendar gebruiken:

Code:
NSDateComponents *gisterenComp = [[NSDateComponents alloc] init];
[gisterenComp setYear:2009];
[gisterenComp setMonth:7];
[gisterenComp setDay:30];
[gisterenComp setHour:6];
[gisterenComp setMinute:0];
[gisterenComp setSecond:0];
NSDate *gisteren = [gregorian dateFromComponents:comps];
[comps release];

NSDateComponents *dateComponents = [gregorian components: NSHourCalendarUnit fromDate:gisteren toDate: nu options: 0];

uren = [dateComponents hour];
if(uren >= 24){
  // doe je ding
}
of als je een NSDate object hebt met de datum van gisteren, dan kan je ook gelijk dit doen:
Code:
unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit;
NSDateComponents *gisterenComp = [gregorian components: unitFlags fromDate:gisteren];
[gisterenComp setHour:6];
[gisterenComp setMinute:0];
[gisterenComp setSecond:0];
NSDate *gisteren = [gregorian dateFromComponents:comps];
[comps release];

NSDateComponents *dateComponents = [gregorian components: NSHourCalendarUnit fromDate:gisteren toDate: nu options: 0];

uren = [dateComponents hour] ;
if(uren >= 24){
  // doe je ding
}

EDIT: foutje

Laatst gewijzigd door Whacko; 31-07-09 om 14:03.
  #6  
Oud 31-07-09, 14:25
SkyTrix's schermafbeelding
SkyTrix SkyTrix is offline
• iOS 5.0 Beta
• 4.3.5
• Besturingssysteem: Mac OS X
 
Geregistreerd: Apr 2009
Berichten: 63
Standaard

Ik heb het even uitgeprobeerd, stonden wat variabelenamen niet in zoals gregorian. Dat moet een NSCalendar zijn neem ik aan.

Code:
// Laatste download ophalen
NSLog(@"Now: %@", [NSDate date]);    
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSDate *lastUpdate = [prefs objectForKey:@"lastUpdate"];    
NSLog(@"Last: %@", lastUpdate);
    
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit;
NSDateComponents *gisterenComp = [gregorian components: unitFlags fromDate:lastUpdate];
[gisterenComp setHour:6];
[gisterenComp setMinute:0];
[gisterenComp setSecond:0];
    
NSDate *gisteren = [gregorian dateFromComponents:gisterenComp];
    
NSDateComponents *dateComponents = [gregorian components: NSHourCalendarUnit fromDate:gisteren toDate:[NSDate date] options:0];
NSInteger uren = [dateComponents hour] ;
NSLog(@"%i", uren);
Resultaat:
Code:
Now: 2009-07-31 13:23:47 +0200
Last: 2009-07-31 11:08:25 +0200
7
Die 7 hoort een 2 te zijn..?

EDIT: toch niet, ik moet vergelijken met die van 06 AM he Het werkt nu denk ik, thanks!

Laatst gewijzigd door SkyTrix; 31-07-09 om 14:35.
  #7  
Oud 31-07-09, 14:36
Whacko Whacko is offline
• iOS 7.1.2
• 5.1.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jan 2009
Berichten: 484
Standaard

hehe ik wilde net reageren, toen ik refreshte stond jouw reactie erbij hij verzet de tijd van gistern naar 6 uur, dus dan zit er inderdaad 7 uur tussen
  #8  
Oud 31-07-09, 14:38
SkyTrix's schermafbeelding
SkyTrix SkyTrix is offline
• iOS 5.0 Beta
• 4.3.5
• Besturingssysteem: Mac OS X
 
Geregistreerd: Apr 2009
Berichten: 63
Standaard

Het duurde toch een tijdje tegen ik het doorhad Ben niet bepaald sterk met datums..

Thx
  #9  
Oud 31-07-09, 14:42
Whacko Whacko is offline
• iOS 7.1.2
• 5.1.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jan 2009
Berichten: 484
Standaard

oh nog een leuke... als je gaat testen met zomer en wintertijd, dan kan die 24 uur dus minder worden he have fun
  #10  
Oud 31-07-09, 14:46
SkyTrix's schermafbeelding
SkyTrix SkyTrix is offline
• iOS 5.0 Beta
• 4.3.5
• Besturingssysteem: Mac OS X
 
Geregistreerd: Apr 2009
Berichten: 63
Standaard

Ja heb al zitten aan denken.. :/ Als die 24 minder wordt is het niet erg, een keer te veel updaten mag, te weinig niet.
  #11  
Oud 31-07-09, 15:05
Whacko Whacko is offline
• iOS 7.1.2
• 5.1.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jan 2009
Berichten: 484
Standaard

minder updaten zal ie waarschijnlijk niet doen (ik ken de rest van je code niet natuurlijk) maar je moet eerder denken aan dat ie een uur eerder of later (relatief aan de vorige dag) update.
Reageren



Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 
Discussietools
Weergave

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
Help! Bug in NSDate! markvwijnen Ontwikkelen voor iOS 4 31-05-09 12:58
Klok icon taskbar alleen voor volgende dag ThoMM. Jailbreak apps en thema's 2 08-10-08 22:37
Agenda staat op volgende dag! Lowdown Unlock [archief] 3 08-01-08 00:00

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 06:55.