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
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
Comment