Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich habe mir eine Klasse geschrieben, welche mir aus einem String das Datum zurückgibt. Ich gebe bspw. '01' ein und es gibt mir das aktuelle Tagesdatum zurück. '0101' gibt mir '01.01.2010' zurück. Wie auch immer.

Ich möchte nun noch 2 Verbesserungen einbauen (bisher):

- Anstelle des fest einprogrammierten Punktes möchte ich den Date-Separator aus Windows auslesen und einfügen.

- Ich möchte variable auf die US-Darstellung reagieren können. Sprich wenn dort MM/DD/YYYY eingestellt ist, möchte ich das natürlich auch so einstellen.

Weiß jmd. woher ich die Informationen bekomme? Unten der Code...

Gruß

Mathias


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;



namespace MDIChild2

{

    class ConvertDate

    {


        public static string convertDateString(String date)

        {          

            string month = DateTime.Now.Month.ToString();

            string year = DateTime.Now.Year.ToString();

            string partYear;


            if (date.Length > 12)

	        {

                MessageBox.Show("String too long for a date.");

                return date;

	        }


            date = date.Replace(".", "");

            date = date.Replace("/", "");


            int length = date.Length - 1;


            if (IsNumeric(date))

            {

                if (date.Length <= 2)

                {

                    return        date.Substring(0, date.Length).PadLeft(2, '0') + "." 

                                + month + "." 

                                + year;


                }


                if (date.Length <= 4)

                {

                    return      date.Substring(0, 2) + "." 

                              + date.Substring(2, date.Length-2).PadLeft(2, '0') + "." 

                              + year;

                }


                if (date.Length <= 8)

                {

                    if (date.Substring(4, date.Length - 4).Length == 4)

                    {

                        return date.Substring(0, 2) + "."

                                  + date.Substring(2, 2) + "."

                                  + date.Substring(4, date.Length - 4);

                    }

                    else

                    {

                        partYear = year.Substring(0, (4 - date.Substring(4, date.Length - 4).Length)) + date.Substring(4, date.Length - 4);


                        return date.Substring(0, 2) + "."

                                  + date.Substring(2, 2) + "."

                                  + partYear;

                    }


                }                                              

            }


            return date;      

        }


        public static bool IsNumeric(object numberString)

        {

            char[] ca = numberString.ToString().ToCharArray();

            for (int i = 0; i < ca.Length; i++)

            {

                if (!char.IsNumber(ca[i]))

                    if (ca[i] != '.')

                        return false;

            }

            if (numberString.ToString().Trim() == "")

                return false;

            return true;

        }

    }

}


Geschrieben

Nein mir ging es darum meine Datumsfelder benutzerfreundlicher zu gestalten. Sprich wenn ein Benutzer nur 01 eingibt, dann wird ihm daraus automatisch der erste des aktuellen Monats zurück gegeben, 0101 der 1 Januar des aktuellen Jahrs und 010110 der 1 Januar 2010.

Und ich denke das ist ne super Sache und wüsste nicht, dass es da etwas von c# gibt.

Geschrieben

Hi Matze,

du musst mal unter:

System.Globalization nachschauen. Da gibts sogar ne Funktion:

DateTimeFormatInfo.CurrentInfo() --> du liest das aktuell eingestellt datumsformat (des landes) aus (system).

mfg kevin

Geschrieben (bearbeitet)

class Program
{
static void Main(string[] args)
{
DateTime datum;

string eingabeDatum=Console.ReadLine();
switch (eingabeDatum)
{
case "01":
datum=new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
break;
case "0101":
datum=new DateTime(DateTime.Now.Year, 1, 1);
break;
default:
DateTime.TryParse(eingabeDatum, out datum);
break;
}

Console.WriteLine(datum);
Console.ReadKey();
}
}[/PHP]

Wie wäre es damit:

01 ergibt das Datum des Monatsersten

0101 ergibt das Datum des Jahresersten

und für den Rest kann der Benutzer auch gleich einen Datumsstring eingeben (die zwei Punkte ersparen dem Benutzer nun wirklich nix)

?

Bearbeitet von lilith2k3
Geschrieben

Hi kevinka,

vielen Dank für den Tipp, werde ich später einmal ausprobieren.

@lilith2k3:

01 und 0101 waren nur ein Beispiel. Wenn ich 25 eingebe erhalte ich aktuell

den 15.10.2010 und wenn ich 1509 eingebe 15.09.2010. Wenn ich 150211

eingebe....... 15.02.2011.

Geschrieben

Wo ist das Problem?

Dann musst Du lediglich den switch-Teil umschreiben ...?!

 switch (eingabeDatum.Length)
{
case 2:
int day;
if (int.TryParse(eingabeDatum, out day)==false) day=1;
datum=new DateTime(DateTime.Now.Year, DateTime.Now.Month, day);
break;
case 4:
int day2;
int month;

if (int.TryParse(eingabeDatum.Substring(0,2), out day2)==false) day2=1;
if(int.TryParse(eingabeDatum.Substring(2, 2), out month)==false) month =1;

datum=new DateTime(DateTime.Now.Year, month, day2);
break;
default:
DateTime.TryParse(eingabeDatum, out datum);
break;
}[/PHP]

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...