Skip to content
This repository was archived by the owner on Sep 8, 2025. It is now read-only.

Commit c7e3a98

Browse files
authored
Merge pull request #202 from DevTchernov/hotfix/ios-datetime-picker-bug
Hotfix/ios datetime picker bug
2 parents 5365036 + 37860eb commit c7e3a98

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ Current version - `0.1.0-dev-18`. Dev version is not tested in production tasks
1212

1313
## Roadmap
1414
- December-January: Test library in real project;
15-
- February: 0.1.0 release with flexible API; production usage at IceRock;
15+
- February: production usage at IceRock;
16+
- March: 0.1.0 release with flexible API;
1617
- First half of 2020: more widgets, more factories; figma template and generation of screens.
1718

1819
## Sample Screen

widgets-datetime-picker/src/iosMain/kotlin/dev/icerock/moko/widgets/datetimepicker/ShowDatePickerExt.kt

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import platform.UIKit.UIControlEventTouchUpInside
3030
import platform.UIKit.UIApplication
3131
import platform.Foundation.NSBundle
3232
import platform.Foundation.NSDate
33+
import platform.Foundation.NSTimeIntervalSince1970
3334

3435
actual class DatePickerDialogHandler(
3536
val positive: ((dialogId: Int, date: DateTime) -> Unit)?,
@@ -212,35 +213,31 @@ class DatePickerController(
212213
anchor = controlPanel.topAnchor
213214
).active = true
214215

215-
val nsDate = NSDate()
216-
val date = DateTime.nowUnix()
217-
val diffDate = date - nsDate.timeIntervalSinceReferenceDate
218-
219-
if (startDate != null) {
220-
startDate.unixMillis
221-
datePicker.minimumDate = NSDate(startDate.unixMillis - diffDate)
222-
}
223-
224-
if (endDate != null) {
225-
endDate.unixMillis
226-
datePicker.maximumDate = NSDate(endDate.unixMillis - diffDate)
227-
}
216+
datePicker.minimumDate = startDate?.toNSDate()
217+
datePicker.maximumDate = endDate?.toNSDate()
228218

229219
if (selectedDate != null) {
230-
datePicker.setDate(NSDate(selectedDate.unixMillis - diffDate))
220+
datePicker.setDate(selectedDate.toNSDate())
231221
}
232222

233223
doneButton.setEventHandler(UIControlEventTouchUpInside) {
234224
this.dismissViewControllerAnimated(flag = true, completion = null)
235225
handler.positive?.invoke(
236226
dialogId,
237-
DateTime(diffDate + datePicker.date.timeIntervalSinceReferenceDate)
227+
datePicker.date.toKlock()
238228
)
239229
}
240230
cancelButton.setEventHandler(UIControlEventTouchUpInside) {
241231
this.dismissViewControllerAnimated(flag = true, completion = null)
242232
handler.negative?.invoke(dialogId)
243233
}
244234
}
235+
}
236+
237+
internal fun DateTime.toNSDate(): NSDate {
238+
return NSDate((unixMillis / 1000) - NSTimeIntervalSince1970)
239+
}
245240

241+
internal fun NSDate.toKlock(): DateTime {
242+
return DateTime(unixMillis = (this.timeIntervalSinceReferenceDate() + NSTimeIntervalSince1970) * 1000)
246243
}

0 commit comments

Comments
 (0)