Get milliseconds from time and construct time based on milliseconds

Steven Schveighoffer schveiguy at gmail.com
Tue May 28 23:18:46 UTC 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:

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

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

-Steve


More information about the Digitalmars-d-learn mailing list