-
Notifications
You must be signed in to change notification settings - Fork 24.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DatepickerIOS onDateChange reports the wrong date #8169
Comments
Maybe git binary search could help tracking it down.. |
I'm having this problem too. But since I'm using time mode, it's returning the wrong hour. Always 1 hour more than the selected. If I selected 9 AM, it returns me 10 AM.. RN 0.21.0 I'll try do upgrade and will report here later Couldn't really try. When I updated to RN 0.28 my project exploded in so many ways I've to downgrade to 0.21 and relink all libs. Still having the problem. |
I can confirm this bug was introduced in 0.26, as far as I can tell commit 47a470a seems to be the culprit. Haven't had a chance to investigate further. cc @sebmarkbage |
Hi, I wonder know that whether the RN team notice this bug? |
I'm also experiencing this issue, using RN 0.29.0. |
same issue with RN 0.34 RC |
I still have this issue with RN 0.33 (kinda obvious since @jgibbons is reporting issues with RN 0.34 RC). This is a really big issue :( |
Same here. It's hard to really tell what is wrong and I also have problem with output day being for 1 to big... I think it's related to timezone or to some old dates, because it works for some dates and not for the others. |
@tomazahlin I'm using time mode. What I've noticed is that the date is always the previous date you've set. If you set the date for day 2, then 4, then 10, you will end up with day 4. What is really bugging me is.. Are we the only ones with this problem?! It has been 4 months since the first report. Makes me wonder if the RN team noticed this bug at all =( |
@ammichael I have just seen I had a totally another problem, which I solved. My problem was that the DatePickerIOS sometimes gave back a date object where day was 1 to less. I solved it by not doing let date = new Date(year,month,day);, but by doing let date = new Date(); date.setUTCFullYear(year,month,day); Using the provided example on the top it works flawlessly. The date always changes. I also cannot reproduce the problem which you describe, about the previous date being set. Maybe try cloning the Date object before setting it to state? I think if the same object reference is set to state or received by props, the component would not re-render. Just my suggestion what you could try. |
@ammichael same issue here. I'm using "date" mode. An example is I scrolled to year 2014, then 1996, then 1992. the output stays at 1996. Same thing happens with month or day. What's weird is, it only happens from every so often. |
@tomazahlin I have tried to clone the Date object, but didn't matter =/ @JakeRawr That is why it is so frustrating! It doesn't happen every time, so you can't find a reliable solution.. |
i am using react-native 0.37.0 and In my case class DatePickerBug extends Component {
constructor(props) {
super(props);
this.state = {
date: new Date()
};
}
loadFromServer() {
// this prints old picked date instead of new picked date
console.log(this.state.date);
}
onDateChange(date) {
this.setState({
date: date
});
this.loadFromServer();
}
render() {
return (
<View style={styles.container}>
<Text>{this.state.date.toString()}</Text>
<DatePickerIOS
date={this.state.date}
mode="date"
onDateChange={(date) => this.onDateChange(date)}
/>
</View>
);
}
} |
Same issue here. |
see problem on RN-0.42 too |
This is still broken. It seems to be a problem on the native side, but I cannot fix the native plugin myself, unfortunately. Someone, please help out. Update: Did some digging and the date is also wrong (i.e. stuck on the last date) inside Update 2: As a workaround, I wrapped a |
@davidpfahler Do you mind sharing the code that you have used to wrap a This is what I have right now. Just wanted to make sure I didn't miss anything class DatePicker extends Component {
state = {
allowPointerEvents: true
}
onDateChange = (date) => {
this.props.onDateChange(date)
this.setState({
allowPointerEvents: false
})
const timeoutId = setTimeout(() => {
this.setState({
allowPointerEvents: true
})
clearTimeout(timeoutId)
}, 500)
}
render() {
return (
<View pointerEvents={this.state.allowPointerEvents ? 'auto' : 'none'}>
<DatePickerIOS {...this.props} onDateChange={this.onDateChange} />
</View>
);
}
} Update May 15, 2017 It would be great if somebody with native iOS experience could look into it. |
This is still a bug as of RN 0.44.3 |
This actually is a bug in the iOS itself. I can easily reproduce this problem in the native Reminders and Calendar app. |
Spent past couple of days fighting this bug, according to my findings problem is that action for I worked around that problem by making a custom native getter method that returns [1] https://github.com/facebook/react-native/blob/master/React/Views/RCTDatePicker.m#L34 |
@dgladkov Very interested. I would be happy to just know what I need to change in the |
@varungupta85 I've released my uncontrolled DatePicker version as a library: https://github.com/dgladkov/react-native-uncontrolled-date-picker-ios I've tried to add |
Thanks @dgladkov. I will try it out. |
This is how I fix it: Hope it useful! |
I'm having a weird bug: the date picker reports a wrong date only if my phone's timezone is set to "auto", but not if I manually set it (to the same TZ...) I'm in Paris TZ (UTC+2). |
Still a problem in 0.49, how can we let the RN team know about this? It seems to be lost in the endless issue graveyard. Here's a link to product pains, in case that makes any difference. Please vote for it if you want that fixed. https://react-native.canny.io/feature-requests/p/datepickerios-wrong-date-or-time |
I upgraded project from @willmcneilly to latest stable versions of React & React Native. The bug is still there. "react": "^16.2.0", |
Yeap I can confirm that the bug is still there. "react": "^16.2.0", |
Also seeing this on recent React Native versions.
This comment describes very nicely how to reproduce this: #4787 (comment) |
react-native-modal-datetime-picker now supports custom picker components. |
https://github.com/dgladkov/react-native-uncontrolled-date-picker-ios works great for me. Would be awesome to add this API in the original |
https://github.com/dgladkov/react-native-uncontrolled-date-picker-ios doesn't work for me. I believe this is not a RN issue because it doesn't work in Apple Calendar either. |
For anyone having issues I recommend @dgladkov 's component. Works well for me |
Did this commit (446ce49) in 0.55 fix this issue? I was getting intermittent results in the first place, so it's hard to tell. 🤔 The comment for the new I'm using the |
Although https://github.com/dgladkov/react-native-uncontrolled-date-picker-ios seems to fix this issue, it doesn't support the |
Closing this issue as various comments earlier in this thread suggest this is a bug in iOS that can be also reproduced in the Apple Calendar app. There were also some other interesting workarounds suggested and alternative components. DatePickerIOS is going to be extracted out soon to a separate repository where we will be able to commit more code, including workaround for this issue to be available out of the box. |
This issue has been fixed on recently updates? I'm currently on version 0.59.9 and this appear to be fixed. |
Still having this issue, using range, when logging the dates it logging the right date, but when formatting the date something is going wrong, react native 0.61:( |
Me too, same issue using countdown with React Native 0.59.9 |
When using datepickerIOS the onDateChange callback sometimes reports the wrong date. By changing between date and month in quick succession you'll quickly find that the date reported by onDateChange is different from that shown on the datepicker. It's worth noting that the callback does fire correctly, it's just the date it provides is stale.
It's much easier to replicate on device but still possible on the simulator. Here's an example of the problem:
The code is straight forward:
We've noticed this issue in both 0.26 and 0.27. It didn't exist in 0.22 but because we upgraded our project in one move from 0.22 to 0.26 I'm unsure which version introduced the bug.
If anyone would like to get up and running with the example I have it here https://github.com/willmcneilly/RNDatepickerIOSBug
The text was updated successfully, but these errors were encountered: