Bereken het verschil tussen twee datums
- Start een nieuw Xamarin-project (ik heb het de naam VerschilTussenDatums gegeven).
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"); } } }