1 /// Utilties related to unix time 2 module dscord.util.time; 3 4 version (Posix) { 5 import core.sys.posix.sys.time; 6 7 /// Returns UTC time in microseconds 8 long getUnixTimeMicro() { 9 timeval t; 10 gettimeofday(&t, null); 11 return 1000000 * t.tv_sec + t.tv_usec; 12 } 13 14 /// Returns UTC time in milliseconds. 15 long getUnixTimeMilli() { 16 timeval t; 17 gettimeofday(&t, null); 18 return t.tv_sec * 1000 + t.tv_usec / 1000; 19 } 20 21 /// Returns UTC time in seconds. 22 long getUnixTime() { 23 return getUnixTimeMilli() / 1000; 24 } 25 } 26 27 version (Windows) { 28 import core.sys.windows.winbase; 29 30 long getUnixTimeMilli() { 31 SYSTEMTIME systemTime; 32 GetSystemTime(&systemTime); 33 FILETIME fileTime; 34 SystemTimeToFileTime( &systemTime, &fileTime ); 35 long fileTimeNano100; 36 fileTimeNano100 = ((cast(long)fileTime.dwHighDateTime) << 32) + fileTime.dwLowDateTime; 37 long posixTime = fileTimeNano100/10000 - 11644473600000; 38 return posixTime; 39 } 40 41 long getUnixTime() { 42 return getUnixTimeMilli() / 1000; 43 } 44 }