Mobiele apps programmeren met Xamarin – Praktische voorbeelden – Bereken het verschil tussen twee datums

print
Bereken het verschil, in dagen, tussen 2 datums.

XAML

De opbouw gebeurt via een aantal StackLayouts, zowel horizontaal als verticaal. De opmaak zou geen probleem mogen vormen maar toch even het gebruik van de DatePicker uitlichten. Merk het gebruik van de DateSelected-event op en de eigenschap Format="dd/MM/yyyy"

 <DatePicker x:Name="fromDatePicker" DateSelected="OnDateSelected" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Format="dd/MM/yyyy"/>

De volledige XAML is:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:VerschilTussenDatums" x:Class="VerschilTussenDatums.MainPage">
    <StackLayout Margin="10">
        <Label Text="Verschil tussen 2 datums" FontSize="Large" HorizontalOptions="Center" />

        <StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand">
            <Label Text="Van:" VerticalOptions="Center"/>
            <DatePicker x:Name="fromDatePicker" DateSelected="OnDateSelected" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Format="dd/MM/yyyy"/>
        </StackLayout>

        <StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand">
            <Label Text="Tot:" VerticalOptions="Center" />
            <DatePicker x:Name="toDatePicker" DateSelected="OnDateSelected" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Format="dd/MM/yyyy"/>
        </StackLayout>

        <Label x:Name="resultLabel" FontSize="Medium" HorizontalOptions="Center" VerticalOptions="CenterAndExpand" />
    </StackLayout>

</ContentPage>

Code-behind

De code-behind vindt u opnieuw in MainPage.xaml.cs.

Het aantal dagen tussen 2 datums wordt berekend met onderstaande code:

int dagen = (toDatePicker.Date - fromDatePicker.Date).Days;

Vervolgens wordt dit aantal toegekend aan het voorziene label.

resultLabel.Text = String.Format("{0} dag{1} tussen de twee datums.", dagen, dagen == 1 ? "" : "en");

Merk de ?:-operator op die werkt als een “inline” if-statement:

conditie ? waar-expressie : onwaar-expressie;

Of zoals in dit voorbeeld toegepast om een meervoudsvorm aan te maken indien er meerdere dagen zijn:

dagen == 1 ? "" : "en"

De volledige code is:

using System;
using Xamarin.Forms;

namespace VerschilTussenDatums
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void OnDateSelected(object sender, DateChangedEventArgs e)
        {
            int dagen = (toDatePicker.Date - fromDatePicker.Date).Days;
            resultLabel.Text = String.Format("{0} dag{1} tussen de twee datums.", dagen, dagen == 1 ? "" : "en");
        }
    }
}

Geef een reactie

  • Abonneer je op deze website d.m.v. e-mail

    Voer je e-mailadres in om je in te schrijven op deze website en e-mailmeldingen te ontvangen van nieuwe berichten.