digitalmars.D.learn - Get milliseconds from time and construct time based on milliseconds
- bauss (7/7) May 28 I have two questions that I can't seem to find a solution to
- Ferhat =?UTF-8?B?S3VydHVsbXXFnw==?= (17/24) May 28 Unixtime might be what you want:
- bauss (8/35) May 28 Thanks a lot.
- Steven Schveighoffer (10/44) May 28 You can do `SysTime(unixTimeToStdTime(0))` to get a SysTime that
- bauss (3/53) May 29 Thanks! That's a lot cleaner
I have two questions that I can't seem to find a solution to after looking at std.datetime. First question is how do I get the current time but in milliseconds? Second is how do I construct a time ex. systime or datetime based on milliseconds? Thanks
May 28
On Tuesday, 28 May 2024 at 17:37:42 UTC, bauss wrote:I have two questions that I can't seem to find a solution to after looking at std.datetime. First question is how do I get the current time but in milliseconds? Second is how do I construct a time ex. systime or datetime based on milliseconds? ThanksUnixtime might be what you want: import std; import std.datetime; import std.stdio; void main() { // Get the current time in the UTC time zone auto currentTime = Clock.currTime(); // Convert the time to the Unix epoch (1970-01-01T00:00:00Z) Duration unixTime = currentTime - SysTime(DateTime(1970, 1, 1), UTC()); // Get the total milliseconds long milliseconds = unixTime.total!"msecs"; // Print the Unix time in milliseconds writeln("Unix time in milliseconds: ", milliseconds); }
May 28
On Tuesday, 28 May 2024 at 18:29:17 UTC, Ferhat Kurtulmuş wrote:On Tuesday, 28 May 2024 at 17:37:42 UTC, bauss wrote:Thanks a lot. Also figured out the second question based on your result. Simply doing: ``` SysTime(DateTime(1970, 1, 1), UTC()) + dur!"msecs"(milliseconds) ``` Seems to work.I have two questions that I can't seem to find a solution to after looking at std.datetime. First question is how do I get the current time but in milliseconds? Second is how do I construct a time ex. systime or datetime based on milliseconds? ThanksUnixtime might be what you want: import std; import std.datetime; import std.stdio; void main() { // Get the current time in the UTC time zone auto currentTime = Clock.currTime(); // Convert the time to the Unix epoch (1970-01-01T00:00:00Z) Duration unixTime = currentTime - SysTime(DateTime(1970, 1, 1), UTC()); // Get the total milliseconds long milliseconds = unixTime.total!"msecs"; // Print the Unix time in milliseconds writeln("Unix time in milliseconds: ", milliseconds); }
May 28
On Tuesday, 28 May 2024 at 18:41:02 UTC, bauss wrote:On Tuesday, 28 May 2024 at 18:29:17 UTC, Ferhat Kurtulmuş wrote:You can do `SysTime(unixTimeToStdTime(0))` to get a SysTime that is at the unix epoch.On Tuesday, 28 May 2024 at 17:37:42 UTC, bauss wrote:I have two questions that I can't seem to find a solution to after looking at std.datetime. First question is how do I get the current time but in milliseconds? Second is how do I construct a time ex. systime or datetime based on milliseconds? ThanksUnixtime might be what you want: import std; import std.datetime; import std.stdio; void main() { // Get the current time in the UTC time zone auto currentTime = Clock.currTime(); // Convert the time to the Unix epoch (1970-01-01T00:00:00Z) Duration unixTime = currentTime - SysTime(DateTime(1970, 1, 1), UTC());Also figured out the second question based on your result. Simply doing: ``` SysTime(DateTime(1970, 1, 1), UTC()) + dur!"msecs"(milliseconds) ``` Seems to work.Note there is an `msecs` function: ```d SysTime(unixTimeToStdTime(0)) + milliseconds.msecs; ``` https://dlang.org/phobos/std_datetime_systime.html#unixTimeToStdTime https://dlang.org/phobos/core_time.html#msecs -Steve
May 28
On Tuesday, 28 May 2024 at 23:18:46 UTC, Steven Schveighoffer wrote:On Tuesday, 28 May 2024 at 18:41:02 UTC, bauss wrote:Thanks! That's a lot cleanerOn Tuesday, 28 May 2024 at 18:29:17 UTC, Ferhat Kurtulmuş wrote:You can do `SysTime(unixTimeToStdTime(0))` to get a SysTime that is at the unix epoch.On Tuesday, 28 May 2024 at 17:37:42 UTC, bauss wrote:I have two questions that I can't seem to find a solution to after looking at std.datetime. First question is how do I get the current time but in milliseconds? Second is how do I construct a time ex. systime or datetime based on milliseconds? ThanksUnixtime might be what you want: import std; import std.datetime; import std.stdio; void main() { // Get the current time in the UTC time zone auto currentTime = Clock.currTime(); // Convert the time to the Unix epoch (1970-01-01T00:00:00Z) Duration unixTime = currentTime - SysTime(DateTime(1970, 1, 1), UTC());Also figured out the second question based on your result. Simply doing: ``` SysTime(DateTime(1970, 1, 1), UTC()) + dur!"msecs"(milliseconds) ``` Seems to work.Note there is an `msecs` function: ```d SysTime(unixTimeToStdTime(0)) + milliseconds.msecs; ``` https://dlang.org/phobos/std_datetime_systime.html#unixTimeToStdTime https://dlang.org/phobos/core_time.html#msecs -Steve
May 29