|
|
@ -1,6 +1,9 @@ |
|
|
|
import React from 'react' |
|
|
|
import { StyleSheet, requireNativeComponent } from 'react-native' |
|
|
|
import moment from 'moment' |
|
|
|
|
|
|
|
function addMinutes(date, minutesToAdd) { |
|
|
|
return new Date(date.valueOf() + minutesToAdd * 60 * 1000) |
|
|
|
} |
|
|
|
|
|
|
|
const NativeDatePicker = requireNativeComponent( |
|
|
|
`DatePickerManager`, |
|
|
@ -33,7 +36,7 @@ class DatePickerAndroid extends React.PureComponent { |
|
|
|
} |
|
|
|
|
|
|
|
_onChange = e => { |
|
|
|
const jsDate = this._fromIsoWithTimeZoneOffset(e.nativeEvent.date).toDate() |
|
|
|
const jsDate = this._fromIsoWithTimeZoneOffset(e.nativeEvent.date) |
|
|
|
this.props.onDateChange && this.props.onDateChange(jsDate) |
|
|
|
if (this.props.onDateStringChange) { |
|
|
|
this.props.onDateStringChange(e.nativeEvent.dateString) |
|
|
@ -50,22 +53,17 @@ class DatePickerAndroid extends React.PureComponent { |
|
|
|
|
|
|
|
_date = () => this._toIsoWithTimeZoneOffset(this.props.date) |
|
|
|
|
|
|
|
_fromIsoWithTimeZoneOffset = date => { |
|
|
|
if (this.props.timeZoneOffsetInMinutes === undefined) return moment(date) |
|
|
|
|
|
|
|
return moment |
|
|
|
.utc(date) |
|
|
|
.subtract(this.props.timeZoneOffsetInMinutes, 'minutes') |
|
|
|
_fromIsoWithTimeZoneOffset = timestamp => { |
|
|
|
const date = new Date(timestamp) |
|
|
|
if (this.props.timeZoneOffsetInMinutes === undefined) return date |
|
|
|
return addMinutes(date, -this.props.timeZoneOffsetInMinutes) |
|
|
|
} |
|
|
|
|
|
|
|
_toIsoWithTimeZoneOffset = date => { |
|
|
|
if (this.props.timeZoneOffsetInMinutes === undefined) |
|
|
|
return moment(date).toISOString() |
|
|
|
return date.toISOString() |
|
|
|
|
|
|
|
return moment |
|
|
|
.utc(date) |
|
|
|
.add(this.props.timeZoneOffsetInMinutes, 'minutes') |
|
|
|
.toISOString() |
|
|
|
return addMinutes(date, this.props.timeZoneOffsetInMinutes).toISOString() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|