Xamarin формы: получить следующую и предыдущую даты с выбранной датой - PullRequest
0 голосов
/ 04 октября 2019

Я использую следующие коды для получения сведений о следующем и предыдущем днях за выбранный день. У меня есть 2 кнопки, названные next и previous для получения следующих предыдущих дат.

//Saving the current date
string selectedDate = DateTime.Now.ToString("dd-MM-yyyy");

//Previous day
public void PrevButtonClicked(object sender, EventArgs args)
{
   DateTimeOffset dtOffset;
   if (DateTimeOffset.TryParse(selectedDate, null, DateTimeStyles.None, out dtOffset))
   {
      DateTime myDate = dtOffset.DateTime;
      selectedDate = myDate.AddDays(-1).ToString("dd-MM-yyyy");
   }
}
//Next day
public void NextButtonClicked(object sender, EventArgs args)
{
    DateTimeOffset dtOffset;
    if (DateTimeOffset.TryParse(selectedDate, null, DateTimeStyles.None, out dtOffset))
    {
       DateTime myDate = dtOffset.DateTime;
       selectedDate = myDate.AddDays(+1).ToString("dd-MM-yyyy");
     }
 }

Если я нажму предыдущую кнопку, я получу 03-04-2019 в результате. Если снова нажать предыдущую кнопку, я получу 02-10-2019. То же самое для следующих кнопок. Основываясь на выбранной дате, он вернет следующую или предыдущую дату.

Эта функция отлично работает в Android и Windows. Но в IOS получить неправильный результат с этим кодом. Это правильный способ достижения этой функции?

1 Ответ

2 голосов
/ 04 октября 2019

Вы можете улучшить свой код. Я создаю образец с меткой для отображения текущей даты.

в xaml

<StackLayout VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand" Orientation="Horizontal">

    <Button Text="Preview" Clicked="PrevButtonClicked"/>

    <Label x:Name="dateLabel" TextColor="Red" WidthRequest="100"/>

    <Button Text="Next"  Clicked="NextButtonClicked"/>

</StackLayout>

в коде Behind

public partial class MainPage : ContentPage
{
  int year, month, day;

  public MainPage()
  {
     InitializeComponent();

     dateLabel.Text = DateTime.Now.ToString("dd-MM-yyyy");

     year = DateTime.Now.Year;
     month = DateTime.Now.Month;
     day= DateTime.Now.Day;
  }

  private void Button_Clicked(object sender, EventArgs e)
  {
    DateTime nowDate = new DateTime(year, month, day);

    var previewDate = nowDate.AddDays(-1);

    dateLabel.Text = previewDate.ToString("dd-MM-yyyy");

    year = previewDate.Year;
    month = previewDate.Month;
    day = previewDate.Day;
  }

  private void Button_Clicked_1(object sender, EventArgs e)
  {
     DateTime nowDate = new DateTime(year, month, day);

     var nextDate = nowDate.AddDays(+1);

     dateLabel.Text = nextDate.ToString("dd-MM-yyyy");

     year = nextDate.Year;
     month = nextDate.Month;
     day = nextDate.Day;
  }
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...