I declare the following variables:
private int year = DateTime.Now.Year, month = DateTime.Now.Month, day = DateTime.Now.Day;
I create DatePickerDialog:
DatePickerDialog datePickerDialog = new DatePickerDialog(this, this, year, month, day);
When I call its method show:
datePickerDialog.Show();
It displays a calendar with 09.03.2018
selected when it has to be the date today 09.02.2018
. Then when I choose some date from the displayed calendar it chooses a date with one month backward from what I've choosen for example if I choose 10.3.2018
It says me that I've selected 10.02.2018
Here is all my activity:
public class OrdersActivity : Activity, IOnDateSetListener
{
private int year = DateTime.Now.Year, month = DateTime.Now.Month, day = DateTime.Now.Day;
Button btnDatePicker;
//set btnDatePicker's text to be whatever user has selected
public void OnDateSet(DatePicker view, int year, int month, int dayOfMonth)
{
this.year = year;
this.month = month;
this.day = dayOfMonth;
string selectedDate = String.Format(day + "." + month + "." + year);
btnDatePicker.Text = selectedDate;
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Orders);
DatePickerDialog datePickerDialog = new DatePickerDialog(this, this, year, month, day);
//set btnDatePicker's text to be DateTime.Now
btnDatePicker = FindViewById<Button>(Resource.Id.btnDatePicker);
btnDatePicker.Text = DateTime.Now.ToString("dd.MM.yyyy");
btnDatePicker.Click += delegate {
datePickerDialog.Show();
};
}
It displays a calendar with 09.03.2018 selected when it has to be the date today 09.02.2018
Please check your phone's time, it works on my phone.
if I choose 10.3.2018 It says me that I've selected 10.02.2018
Yes, in the OnDateSet
method, the month starts at 0, with 0 for January and 1 for February. You need use this.month=month+1;
, and replace
string selectedDate = String.Format(day + "." + month + "." + year);
with
string selectedDate = String.Format(day + "." + this.month + "." + year);
As I have said, the month starts at 0, so you need -1
and +1
, look at the below codes based on your codes.
public class MainActivity : Activity, IOnDateSetListener
{
private int year = DateTime.Now.Year, month = DateTime.Now.Month-1, day = DateTime.Now.Day;
Button btnDatePicker;
//set btnDatePicker's text to be whatever user has selected
public void OnDateSet(DatePicker view, int year, int month, int dayOfMonth)
{
this.year = year;
this.month = month+1;
this.day = dayOfMonth;
string selectedDate = String.Format(day + "." + this.month + "." + year);
btnDatePicker.Text = selectedDate;
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
DatePickerDialog datePickerDialog = new DatePickerDialog(this, this, year, month, day);
//set btnDatePicker's text to be DateTime.Now
btnDatePicker = FindViewById<Button>(Resource.Id.btnDatePicker);
btnDatePicker.Text = DateTime.Now.ToString("dd.MM.yyyy");
btnDatePicker.Click += delegate
{
datePickerDialog.Show();
};
}
}