Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Heyho,

 

ich bastle mir gerade eine Finanz-App in Unity zusammen und überlege wie ich am besten das durchschnittlich verbleibene Tagesgeld für den Monat errechne.

Meine Überlegung ist "verbleibendes Geld / verbleibende Tage", also ganz simpel. Das Problem ist nur, dass die Monate ja eine unterschiedliche Anzahl an Tagen haben.

Deshalb dachte ich, ich nutze DateTime & .ToShortDateString(); und lasse das vierte & fünfte Zeichen auslesen, um dann über einen case die Anzahl der Tage für die Rechnung, passend zum aktuellen Monat, festzulegen.

Jetzt meine Frage, geht das auch einfacher?

Ich bin absoluter Anfänger und probiere mich gerade als Hobbyentwickler, also habt bitte Nachsicht falls das alles keinen Sinn ergibt 😅

Ist auch meine erste Frage, also wenn irgendwas nicht Forenkonform ist gerne darauf hinweisen.

 

Freundliche Grüße

Goldkat

Gelöst von Hydro

Zur Lösung
  • Autor
vor 15 Stunden schrieb hytrex:

Hi Goldkat,

du kannst es dir noch einfacher machen und die Methode DateTime.DaysInMonth(Dein Jahr, Dein Monat) nutzen. Entsprechende Beispiele findest du in der Microsoft Doku: https://docs.microsoft.com/de-de/dotnet/api/system.datetime.daysinmonth

Damit hast du dann auch kein Problem mit Schaltjahren. 

Danke das war sehr hilfreich. Ich habe mein Vorhaben jetzt folgendermaßen umgesetzt:

       

            //Verbleibene Tage im aktuellen Monat auslesen "int RemainingDays"
            DateTime date = DateTime.Now;
            int CurrentYear = date.Year;
            int CurrentMonth = date.Month;
            int CurrentDay = date.Day;
            int DaysInCurrentMonth = DateTime.DaysInMonth(CurrentYear, CurrentMonth);
            int RemainingDays = DaysInCurrentMonth - CurrentDay;

            Console.WriteLine(RemainingDays);

Ich würde das in eine Methode packen:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(RemainingDaysInMonth(DateTime.Now));
    }

    static int RemainingDaysInMonth(DateTime dateTime)
        => DateTime.DaysInMonth(dateTime.Year, dateTime.Month) - dateTime.Day;
}

Vielleicht sogar noch eleganter in eine sog. Extension Method:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(DateTime.Now.RemainingDaysInMonth());
    }
}

static class DateTimeExtensions
{
    public static int RemainingDaysInMonth(this DateTime dateTime)
        => DateTime.DaysInMonth(dateTime.Year, dateTime.Month) - dateTime.Day;
}

Die zweite Variante ist aber schon etwas weiterführend und verlagert die die Berechnung aus der Program-Klasse hinaus.

Grüße dich,

das kannst du, wenn du willst, auch noch vereinfachen:

/Verbleibene Tage im aktuellen Monat auslesen "int RemainingDays"
            int RemainingDays = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) - DateTime.Now.Day;

Oder das ganze in eine eigene Methode verlagern und das aktuelle DateTime objekt reingeben 

Ansonsten hätte ich noch die Anmerkung das du deinen Variablen ein einheitliches 'Schreibmuster' gibst.
Beispielsweise hast du in dem Code date kleingeschrieben, wo hingegen CurrentYear großgeschrieben wird.

Empfehlenswert wäre dort das ganze einheitlich zu machen.
In dem Context ist date schon richtig. CurrentYear würde als currentYear heißen.

 

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.