C# DateTime.Now?

3 Antworten

Now ist bestimmt keine Konstante, sondern eine Funktion: Now()

kaceye3003  23.10.2022, 23:23

Doch ist es ;)

1
ralphdieter  23.10.2022, 23:45
@kaceye3003

Im Ernst? Der Wert ändert sich doch „von Zeit zu Zeit“. Gibt's denn in C# so etwas wie volatile in C?

1
kaceye3003  24.10.2022, 13:12
@ralphdieter

Es gibt auch volatile in C#, aber so ist DateTime.Now nicht implementiert :)

Vielleicht kennst du die Get und Set Methoden z.B. aus Java. In C# braucht man dafür keine eigenen Methoden, sondern kann definieren, was beim Lesen oder Schreiben von Properties passiert. DateTime.Now hat nur einen Get - Accessor, also man kann nicht schreiben sondern nur Lesen.
Das Verhalten ist dadurch recht ähnlich zu einer Methode.

Schau mal hier in Zeile 1050 bis 1100 ca.: https://referencesource.microsoft.com/#mscorlib/system/datetime.cs,b0d5e4c9a8d4ddac,references
Da wird im Get - Accessor einfach die Systemzeit abgerufen (1083) :)

0
ralphdieter  28.10.2022, 07:23
@kaceye3003

Vielen Dank für die Info. Als ich seinerzeit den Entwurf zu C# las, wusste ich nicht, ob ich lachen oder weinen soll. Ganz offensichtlich hat sich hier einiges getan.

Das Konzept Property hat sicherlich seine Berechtigung. Bei Month, Day etc. verstehe ich das voll und ganz. Nur bei Now erschließt sich mir nicht, was hieran besser sein soll als eine statische Funktion. Plant Microsoft vielleicht einen Setter dafür?

0

Fahr mal mit der Maus über DateTime, dann sollte da eine Fehlermeldung erscheinen.

Ansonten vermute ich mal, dass da ein Objekt/Klasse nicht existiert (z.B. include vergessen)

Wahrscheinlich hast du einfach nur die using-Direktive

using System; 

vergessen..

Ich würde dir die Methode ".ToShortDateString()" empfehlen. Sieht besser aus und ist wahrscheinlich auch die bevorzugte Schreibweise in deinem Programm.

using System;
public class DateTimeNow
{
  public static void Main(string[] args)
  {
    string nowDateTime = $"Date: {DateTime.Now.ToShortDateString()}";
    Console.WriteLine(nowDateTime);
  }
}

Output: "Date: 10/23/2022"

Woher ich das weiß:eigene Erfahrung