I want to create a datetime constant in .net but getting the error message
const DateTime dt = Convert.ToDateTime("02/02/2014");
'System.DateTime' cannot be declared const.
From MSDN you'll find that DateTime. Now has an approximate resolution of 10 milliseconds on all NT operating systems. The actual precision is hardware dependent.
DateTime. Today is static readonly . So supposedly it should never change once (statically) instantiated.
The DateTime value type represents dates and times with values ranging from 00:00:00 (midnight), January 1, 0001 Anno Domini (Common Era) through 11:59:59 P.M., December 31, 9999 A.D. (C.E.) in the Gregorian calendar. Time values are measured in 100-nanosecond units called ticks.
Even if you could declare a DateTime
as const (which you can't, as other answers have indicated) you would have to use a compile-time constant as the value - and DateTime.Now
most certainly isn't a compile-time constant.
This is valid though:
static readonly DateTime dt = DateTime.Now();
Note that this will be "whatever time the type initializer for the type ran" though. That's rarely a particularly useful value unless you ensure it's initialized on start-up, assuming that's what you're trying to measure...
DateTime is not a native type in the C# language - it's a struct from the .Net libraries.
In C#, you can only create consts from the native language types, and you can only initialise them with values that can be calculated at compile-time. DateTime.Now cannot be calculated at compile time.
(The only reference type you can use with a const is a string, and that's because strings are handled specially.)
See http://msdn.microsoft.com/en-gb/library/e6w8fe1b%28v=vs.71%29.aspx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With