Skip to content
This repository has been archived by the owner on Feb 8, 2022. It is now read-only.

Commit

Permalink
Merge pull request #207 from arunshankar87/master
Browse files Browse the repository at this point in the history
Set timezone on date time picker
  • Loading branch information
florent37 committed Aug 13, 2019
2 parents 5180bb6 + f7ed7c1 commit bba984f
Show file tree
Hide file tree
Showing 12 changed files with 84 additions and 11 deletions.
Expand Up @@ -13,6 +13,7 @@
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;

import butterknife.BindView;
Expand Down Expand Up @@ -81,7 +82,7 @@ public void simpleTimeClicked() {
final Date defaultDate = calendar.getTime();

singleBuilder = new SingleDateAndTimePickerDialog.Builder(this)

.setTimeZone(TimeZone.getDefault())
.bottomSheet()
.curved()

Expand Down Expand Up @@ -122,7 +123,7 @@ public void simpleDateClicked() {
final Date defaultDate = calendar.getTime();

singleBuilder = new SingleDateAndTimePickerDialog.Builder(this)

.setTimeZone(TimeZone.getDefault())
.bottomSheet()
.curved()

Expand Down Expand Up @@ -164,6 +165,7 @@ public void simpleClicked() {
final Date defaultDate = calendar.getTime();

singleBuilder = new SingleDateAndTimePickerDialog.Builder(this)
.setTimeZone(TimeZone.getDefault())
.bottomSheet()
.curved()

Expand Down Expand Up @@ -218,6 +220,7 @@ public void doubleClicked() {
final Date maxDate = calendarMax.getTime();

doubleBuilder = new DoubleDateAndTimePickerDialog.Builder(this)
.setTimeZone(TimeZone.getDefault())
//.bottomSheet()
//.curved()

Expand Down
Expand Up @@ -3,10 +3,23 @@
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

public class DateHelper {

private static TimeZone timeZone;

public static void setTimeZone(TimeZone timeZoneValue) {
timeZone = timeZoneValue;
}

public static TimeZone getTimeZone() {
return timeZone;
}

public static Calendar getCalendarOfDate(Date date){
final Calendar calendar = Calendar.getInstance(Locale.getDefault());
calendar.setTimeZone(timeZone);
calendar.setTime(date);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
Expand Down Expand Up @@ -34,7 +47,9 @@ public static int getMinuteOf(Date date) {
}

public static Date today() {
return Calendar.getInstance(Locale.getDefault()).getTime();
Calendar now = Calendar.getInstance(Locale.getDefault());
now.setTimeZone(timeZone);
return now.getTime();
}

public static int getMonth(Date date) {
Expand Down
Expand Up @@ -349,7 +349,10 @@ public Date getMinDate() {
}

public void setMinDate(Date minDate) {
this.minDate = minDate;
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(DateHelper.getTimeZone());
calendar.setTime(minDate);
this.minDate = calendar.getTime();
setMinYear();
}

Expand All @@ -358,7 +361,10 @@ public Date getMaxDate() {
}

public void setMaxDate(Date maxDate) {
this.maxDate = maxDate;
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(DateHelper.getTimeZone());
calendar.setTime(maxDate);
this.maxDate = calendar.getTime();
setMinYear();
}

Expand Down Expand Up @@ -430,7 +436,7 @@ public Date getDate() {
final int minute = minutesPicker.getCurrentMinute();

final Calendar calendar = Calendar.getInstance();

calendar.setTimeZone(DateHelper.getTimeZone());
if (displayDays) {
final Date dayDate = daysPicker.getCurrentDate();
calendar.setTime(dayDate);
Expand Down Expand Up @@ -469,7 +475,10 @@ public void setHoursStep(int hoursStep) {

public void setDefaultDate(Date date) {
if (date != null) {
this.defaultDate = date;
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(DateHelper.getTimeZone());
calendar.setTime(date);
this.defaultDate = calendar.getTime();

updateDaysOfMonth();

Expand Down Expand Up @@ -506,6 +515,7 @@ private void updateListener() {
private void updateDaysOfMonth() {
final Date date = getDate();
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(DateHelper.getTimeZone());
calendar.setTime(date);
updateDaysOfMonth(calendar);
}
Expand All @@ -519,7 +529,9 @@ private void updateDaysOfMonth(@NonNull Calendar calendar) {
public void setMustBeOnFuture(boolean mustBeOnFuture) {
this.mustBeOnFuture = mustBeOnFuture;
if (mustBeOnFuture) {
minDate = Calendar.getInstance().getTime(); //minDate is Today
Calendar now = Calendar.getInstance();
now.setTimeZone(DateHelper.getTimeZone());
minDate = now.getTime(); //minDate is Today
}
}

Expand All @@ -531,6 +543,7 @@ private void setMinYear() {

if (displayYears && this.minDate != null && this.maxDate != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(DateHelper.getTimeZone());
calendar.setTime(this.minDate);
yearsPicker.setMinYear(calendar.get(Calendar.YEAR));
calendar.setTime(this.maxDate);
Expand Down Expand Up @@ -573,7 +586,9 @@ private void init(Context context, AttributeSet attrs) {
a.recycle();

if (displayDaysOfMonth) {
updateDaysOfMonth(Calendar.getInstance());
Calendar now = Calendar.getInstance();
now.setTimeZone(DateHelper.getTimeZone());
updateDaysOfMonth(now);
}
}

Expand Down
Expand Up @@ -11,6 +11,7 @@
import android.view.ViewTreeObserver;
import android.widget.TextView;

import com.github.florent37.singledateandtimepicker.DateHelper;
import com.github.florent37.singledateandtimepicker.R;
import com.github.florent37.singledateandtimepicker.SingleDateAndTimePicker;

Expand All @@ -20,6 +21,7 @@
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;

import static com.github.florent37.singledateandtimepicker.widget.SingleDateAndTimeConstants.STEP_MINUTES_DEFAULT;

Expand Down Expand Up @@ -678,6 +680,11 @@ public DoubleDateAndTimePickerDialog.Builder setTab1DisplayMinutes(boolean tab1M
return this;
}

public DoubleDateAndTimePickerDialog.Builder setTimeZone(TimeZone timeZone) {
DateHelper.setTimeZone(timeZone);
return this;
}

public DoubleDateAndTimePickerDialog build() {
final DoubleDateAndTimePickerDialog dialog = new DoubleDateAndTimePickerDialog(context, bottomSheet)
.setTitle(title)
Expand Down
Expand Up @@ -9,6 +9,7 @@
import android.widget.FrameLayout;
import android.widget.TextView;

import com.github.florent37.singledateandtimepicker.DateHelper;
import com.github.florent37.singledateandtimepicker.R;
import com.github.florent37.singledateandtimepicker.SingleDateAndTimePicker;
import com.github.florent37.singledateandtimepicker.widget.WheelMinutePicker;
Expand All @@ -17,6 +18,7 @@
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

import static com.github.florent37.singledateandtimepicker.widget.SingleDateAndTimeConstants.STEP_MINUTES_DEFAULT;

Expand Down Expand Up @@ -516,6 +518,11 @@ public Builder customLocale(Locale locale) {
return this;
}

public Builder setTimeZone(TimeZone timeZone) {
DateHelper.setTimeZone(timeZone);
return this;
}

public SingleDateAndTimePickerDialog build() {
final SingleDateAndTimePickerDialog dialog = new SingleDateAndTimePickerDialog(context, bottomSheet)
.setTitle(title)
Expand Down
Expand Up @@ -53,7 +53,10 @@ protected List<String> generateAdapterValues(){

@Override
public int findIndexOfDate(@NonNull Date date) {
final int hours = date.getHours();
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(DateHelper.getTimeZone());
calendar.setTime(date);
final int hours = calendar.get(Calendar.HOUR_OF_DAY);
if (hours >= SingleDateAndTimeConstants.MAX_HOUR_AM_PM) {
return 1;
} else {
Expand Down Expand Up @@ -87,6 +90,7 @@ public boolean isAmPosition(int position) {
protected String getFormattedValue(Object value) {
if (value instanceof Date) {
Calendar instance = Calendar.getInstance();
instance.setTimeZone(DateHelper.getTimeZone());
instance.setTime((Date) value);
return getLocalizedString(instance.get(Calendar.AM_PM) == Calendar.PM ? R.string.picker_pm : R.string.picker_am);
}
Expand Down
Expand Up @@ -37,12 +37,14 @@ public WheelDayPicker(Context context, AttributeSet attrs) {
@Override
protected void init() {
simpleDateFormat = new SimpleDateFormat(DAY_FORMAT_PATTERN, getCurrentLocale());
simpleDateFormat.setTimeZone(DateHelper.getTimeZone());
}

@Override
public void setCustomLocale(Locale customLocale) {
super.setCustomLocale(customLocale);
simpleDateFormat = new SimpleDateFormat(DAY_FORMAT_PATTERN, getCurrentLocale());
simpleDateFormat.setTimeZone(DateHelper.getTimeZone());
}

@Override
Expand All @@ -68,6 +70,7 @@ protected List<String> generateAdapterValues() {
final List<String> days = new ArrayList<>();

Calendar instance = Calendar.getInstance();
instance.setTimeZone(DateHelper.getTimeZone());
instance.add(Calendar.DATE, -1 * DAYS_PADDING - 1);
for (int i = (-1) * DAYS_PADDING; i < 0; ++i) {
instance.add(Calendar.DAY_OF_MONTH, 1);
Expand All @@ -78,6 +81,7 @@ protected List<String> generateAdapterValues() {
days.add(getTodayText());

instance = Calendar.getInstance();
instance.setTimeZone(DateHelper.getTimeZone());

for (int i = 0; i < DAYS_PADDING; ++i) {
instance.add(Calendar.DATE, 1);
Expand All @@ -92,6 +96,7 @@ protected String getFormattedValue(Object value) {
}

public WheelDayPicker setDayFormatter(SimpleDateFormat simpleDateFormat){
simpleDateFormat.setTimeZone(DateHelper.getTimeZone());
this.customDateFormat = simpleDateFormat;
updateAdapter();
return this;
Expand All @@ -116,6 +121,7 @@ private Date convertItemToDate(int itemPosition) {
Date date = null;
final String itemText = adapter.getItemText(itemPosition);
final Calendar todayCalendar = Calendar.getInstance();
todayCalendar.setTimeZone(DateHelper.getTimeZone());

final int todayPosition = adapter.getData().indexOf(getTodayText());

Expand Down
Expand Up @@ -4,6 +4,8 @@
import android.support.annotation.NonNull;
import android.util.AttributeSet;

import com.github.florent37.singledateandtimepicker.DateHelper;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
Expand Down Expand Up @@ -81,6 +83,7 @@ protected String getFormattedValue(Object value) {
Object valueItem = value;
if (value instanceof Date) {
Calendar instance = Calendar.getInstance();
instance.setTimeZone(DateHelper.getTimeZone());
instance.setTime((Date) value);
valueItem = instance.get(Calendar.HOUR_OF_DAY);
}
Expand Down
Expand Up @@ -37,7 +37,9 @@ protected void init() {

@Override
protected String initDefault() {
return getFormattedValue(Calendar.getInstance().get(Calendar.MINUTE));
Calendar now = Calendar.getInstance();
now.setTimeZone(DateHelper.getTimeZone());
return getFormattedValue(now.get(Calendar.MINUTE));
}

@Override
Expand Down Expand Up @@ -76,6 +78,7 @@ protected String getFormattedValue(Object value) {
Object valueItem = value;
if (value instanceof Date) {
final Calendar instance = Calendar.getInstance();
instance.setTimeZone(DateHelper.getTimeZone());
instance.setTime((Date) value);
valueItem = instance.get(Calendar.MINUTE);
}
Expand Down
Expand Up @@ -3,6 +3,8 @@
import android.content.Context;
import android.util.AttributeSet;

import com.github.florent37.singledateandtimepicker.DateHelper;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
Expand Down Expand Up @@ -38,6 +40,7 @@ protected List<String> generateAdapterValues() {

final SimpleDateFormat month_date = new SimpleDateFormat("MMMM", getCurrentLocale());
final Calendar cal = Calendar.getInstance(getCurrentLocale());
cal.setTimeZone(DateHelper.getTimeZone());
cal.set(Calendar.DAY_OF_MONTH, 1);

for (int i = 0; i < 12; i++) {
Expand Down
Expand Up @@ -26,6 +26,7 @@
import android.view.ViewConfiguration;
import android.widget.Scroller;

import com.github.florent37.singledateandtimepicker.DateHelper;
import com.github.florent37.singledateandtimepicker.LocaleHelper;
import com.github.florent37.singledateandtimepicker.R;

Expand Down Expand Up @@ -932,6 +933,7 @@ public int findIndexOfDate(@NonNull Date date) {

if (this instanceof WheelDayOfMonthPicker) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(DateHelper.getTimeZone());
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_MONTH) - 1;
}
Expand All @@ -945,13 +947,15 @@ public int findIndexOfDate(@NonNull Date date) {

if (this instanceof WheelMonthPicker) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(DateHelper.getTimeZone());
calendar.setTime(date);
return calendar.get(Calendar.MONTH);
}

if (this instanceof WheelYearPicker) {
WheelYearPicker yearPick = (WheelYearPicker) this;
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(DateHelper.getTimeZone());
calendar.setTime(date);
return calendar.get(Calendar.YEAR) - yearPick.minYear;
}
Expand Down
Expand Up @@ -5,6 +5,7 @@
import android.support.annotation.NonNull;
import android.util.AttributeSet;

import com.github.florent37.singledateandtimepicker.DateHelper;
import com.github.florent37.singledateandtimepicker.R;

import java.text.SimpleDateFormat;
Expand Down Expand Up @@ -33,6 +34,7 @@ protected void init() {
simpleDateFormat = new SimpleDateFormat("yyyy", getCurrentLocale());

Calendar instance = Calendar.getInstance();
instance.setTimeZone(DateHelper.getTimeZone());
int currentYear = instance.get(Calendar.YEAR);
this.minYear = currentYear - SingleDateAndTimeConstants.MIN_YEAR_DIFF;
this.maxYear = currentYear + SingleDateAndTimeConstants.MAX_YEAR_DIFF;
Expand Down Expand Up @@ -71,6 +73,7 @@ protected List<String> generateAdapterValues() {
final List<String> years = new ArrayList<>();

final Calendar instance = Calendar.getInstance();
instance.setTimeZone(DateHelper.getTimeZone());
instance.set(Calendar.YEAR, minYear-1);

for (int i = minYear; i <= maxYear; i++) {
Expand Down

0 comments on commit bba984f

Please sign in to comment.