Thread overview
Get milliseconds from time and construct time based on milliseconds
May 28, 2024
bauss
May 28, 2024
Ferhat Kurtulmuş
May 28, 2024
bauss
May 29, 2024
bauss
May 28, 2024

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, 2024

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, 2024

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, 2024

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, 2024

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