Note that there are some explanatory texts on larger screens.

plurals
  1. PONSDate - Change Time Component
    text
    copied!<p>This is probably a silly question but I can't seem to find an answer. </p> <p>I am using a date picker to allow a user to enter a date and it is also setting the time to the current time (I init the picker with [NSDate date]).</p> <p>Is there a way to change the time component of the date? I am later calculating time intervals which returns seconds and I am getting some odd behavior because of the time. </p> <p>This code shows the date entry:</p> <pre><code>@implementation AddEventViewController @synthesize backgroundColor, nameField, dateField, datePicker, eventName, eventDate; -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.view.backgroundColor = self.backgroundColor; } - (void)viewDidLoad { [super viewDidLoad]; dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; CGSize size = self.view.bounds.size; CGRect frame = CGRectMake(0, size.height - 216, 320, 216); datePicker = [[UIDatePicker alloc] initWithFrame: frame]; datePicker.datePickerMode = UIDatePickerModeDate; datePicker.hidden = YES; datePicker.date = [NSDate date]; [datePicker addTarget:self action:@selector(changeDateInLabel:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview: datePicker]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(IBAction)doneButton { if ((nameField.text != nil)) { self.eventName = nameField.text; self.eventDate = datePicker.date; [[NSNotificationCenter defaultCenter]postNotificationName:@"EventAddDone" object:nil]; } else { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Enter Event Name" message:nil delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil]; [alertView show]; [alertView release]; } } -(IBAction)cancelButton { [[NSNotificationCenter defaultCenter]postNotificationName:@"EventAddCancel" object:nil]; } - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } - (void)changeDateInLabel:(id)sender { dateField.text = [dateFormatter stringFromDate:[datePicker date]]; } - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { if(textField == dateField) { dateField.placeholder = @" "; dateField.text = [dateFormatter stringFromDate:[datePicker date]]; datePicker.hidden = NO; [nameField resignFirstResponder]; return NO; } return YES; } - (void)dealloc { self.backgroundColor = nil; self.nameField = nil; self.dateField = nil; self.datePicker = nil; self.eventName = nil; self.eventDate = nil; [dateFormatter release]; [super dealloc]; } @end </code></pre> <p>My use of the recorded date is similar to the following:</p> <pre><code>NSTimeInterval age = [enteredDate timeIntervalSinceNow]; //do some math on the age variable to get number of days since the event occurred. </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload