How do I convert an ISO 8601 datetime into a unix timestamp - at compile-time?

Andrej Mitrovic andrej.mitrovich at gmail.com
Fri Aug 28 01:54:02 UTC 2020


-----
import std.datetime;

void main ()
{
     static time =
         
SysTime(DateTime.fromISOString("20220101T000000")).toUnixTime;
}
-----

-----
/Library/D/dmd/src/phobos/std/concurrency.d(2574): Error: static 
variable lock cannot be read at compile time
/Library/D/dmd/src/phobos/std/concurrency.d(2574):        called 
from here: atomicLoad(lock)
/Library/D/dmd/src/phobos/std/concurrency.d(2600):        called 
from here: initOnceLock()
/Library/D/dmd/src/phobos/std/concurrency.d(2600):        called 
from here: initOnce(delegate shared(bool)() pure @nogc @safe => 
init(), initOnceLock())
/Library/D/dmd/src/phobos/std/datetime/timezone.d(1106):        
called from here: initOnce(delegate shared(bool)() pure nothrow 
@nogc @safe => (*function () nothrow @nogc @safe => true)())
/Library/D/dmd/src/phobos/std/datetime/timezone.d(546):        
called from here: (*& singleton)()
/Library/D/dmd/src/phobos/std/datetime/systime.d(524):        
called from here: opCall()
/Library/D/dmd/src/phobos/std/datetime/systime.d(472):        
called from here: this.this(dateTime, zero(), tz)
test.d(6):        called from here: SysTime(0L, Rebindable(null, 
)).this(fromISOString("20220101T000000"), null)
-----

I'm sure there must be a better way to do this. But I couldn't 
find it in the documentation.


More information about the Digitalmars-d-learn mailing list