String formatted date picker date is off

2019-01-24 20:14发布

I have a UIDatePicker that only has month, day, and year. I am trying to output this selected date to a TextField using this code:

-(IBAction) dateChanged:(id)sender
{
    NSDate *date = datePicker.date;
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"M/d/YYYY"];
    expirationDateField.text = [df stringFromDate:date];
    [df release];
}

For most dates, this works, but for some reason, when I pick January 1, 2009, or January 2, 2009, I end up getting "1/1/2008" or "1/2/2008" (this isnt specific to 2009). I thought it was a time zone problem, but it wouldn't display the wrong year for January 2 if that were the case. Any ideas?

1条回答
我只想做你的唯一
2楼-- · 2019-01-24 20:41

Use lowercase yyyy for the year.

Uppercase YYYY returns the year of the start of the week that date falls in.
See Unicode Date Format Patterns.

查看更多
登录 后发表回答