Announcement

Collapse
No announcement yet.

Datum in integer umrechnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datum in integer umrechnen

    Hallo an alle,
    in vielen Situationen interessiert mich weniger das genaue Datum als vielmehr ein int-Wert, der für ein konkretes Datum steht (unter Delphi gab es wegen der internen Steuerung von Date/Time eine direkte Umsetzung).
    Unter NET scheint es dies nicht zu geben; ich habe deshalb die folgenden Methoden geschrieben, die als statisch in beliebige Klassen eingebunden werden können:
    #region Hilfsfunktionen: Pause, Tageszahl-Umrechnung
    const System.Int64 Ticks_pro_Tag = 864000000000;
    // Ersatz für eine <b>Pause-Funktion</b>
    public void Pause( System.Int32 Dauer ) {
    System.Int32 Start = Environment.TickCount;
    while( (Environment.TickCount - Start) < Dauer )
    System.Windows.Forms.Application.DoEvents(); }
    // <b>Datum in Tageszahl</b> umrechnen; der 1.1.1 ist Tag 0
    public System.Int32 Convert_Date_to_Int( System.DateTime Datum ) {
    return (int)( Datum.Ticks / Ticks_pro_Tag ); }
    // <b>Tageszahl in Datum</b> umrechnen mit Varianten
    // ** <u>ohne Parameter</u> auf 00:00:00 Uhr setzen
    public System.DateTime Convert_Int_to_Date( int Zahl ) {
    return new System.DateTime(Zahl * Ticks_pro_Tag ); }
    // ** mit <u>Parameter Time</u> wird die Uhrzeit des genannten Datums übernommen
    public System.DateTime Convert_Int_to_Date( int Zahl, System.DateTime Zeit ) {
    return new System.DateTime(Zahl * Ticks_pro_Tag ) + Zeit.TimeOfDay; }
    // ** mit <u>Parameter TimeSpan</u> wird diese Uhrzeit übernommen
    public System.DateTime Convert_Int_to_Date( int Zahl, System.TimeSpan Zeit ) {
    return new System.DateTime(Zahl * Ticks_pro_Tag ) + Zeit; }
    // ** mit <u>Parameter bAktuell</u> wird die aktuelle Uhrzeit übernommen
    public System.DateTime Convert_Int_to_Date( int Zahl, bool bAktuell ) {
    if (bAktuell)
    return new System.DateTime(Zahl * Ticks_pro_Tag ) + System.DateTime.Now.TimeOfDay;
    else return new System.DateTime(Zahl * Ticks_pro_Tag ); }
    #endregion
    Vielleicht hat auch sonst jemand Interesse daran oder kann etwas Besseres vorschlagen.
    Jürgen Thomas

  • #2
    Hi,

    vielleicht bringt Dich die Methode Date.ToFileTime (Long) oder Date.ToOADate (Double) weiter. Die beiden scheinen das schon automatisiert zu machen, haben allerdings Einschränkungen bzgl. des Startdatums.

    Gruß

    Zimm

    Comment


    • #3
      Hallo Michael 'Zimmi',
      es geht mir nur um das Datum, nicht um die Zeit. DateTime.Ticks liefert einen longint mit Nanosekunden (diesen habe ich oben benutzt) und ist also eine direkte NET-Lösung; ich möchte aber Stunden, Minuten usw. "überlesen" und habe deshalb die vorgeschlagenen allgemeinen Methoden geschrieben.
      Gruß
      Jürge

      Comment

      Working...
      X