Thread overview
Get milliseconds from time and construct time based on milliseconds
May 28
bauss
May 28
bauss
May 29
bauss
May 28

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?

Thanks

Unixtime 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:

>

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

Unixtime 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);
}

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.

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:

>

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?

Thanks

Unixtime 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());

You can do SysTime(unixTimeToStdTime(0)) to get a SysTime that is at the unix epoch.

>

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:

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

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:

>

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:

>

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

Unixtime 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());

You can do SysTime(unixTimeToStdTime(0)) to get a SysTime that is at the unix epoch.

>

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:

SysTime(unixTimeToStdTime(0)) + milliseconds.msecs;

https://dlang.org/phobos/std_datetime_systime.html#unixTimeToStdTime
https://dlang.org/phobos/core_time.html#msecs

-Steve

Thanks! That's a lot cleaner