Time from timestamp?

Rikki Cattermole via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jan 30 14:22:17 PST 2015


On 31/01/2015 11:18 a.m., Chris Williams wrote:
> I'm attempting to print a human-readable version of a timestamp. The
> timestamp is coming from an external service, via JSON. An example is:
>
> 1421865781342
>
> Which I know to be:
>
> 2015-01-21T18:43:01.342Z
>
> The only method I see which takes an epoch-style timestamp, so that I
> can convert it to something printable, is the SysTime constructor:
>
> pure nothrow @safe this(long stdTime, immutable TimeZone tz = null);
>
> According to the reference, this seems to take the value in hnsecs. My
> expectation would be that this means multiplying my initial value by
> 1_000_000. But if I do that, I get a random date 2500 years in the future.
>
> I created this sample code:
>
> void main() {
>      long time = 1421865781342L;
>      writefln("%s", SysTime(time));
>      writefln("%s", SysTime(time * 10L));
>      writefln("%s", SysTime(time * 100L));
>      writefln("%s", SysTime(time * 1_000L));
>      writefln("%s", SysTime(time * 10_000L));
>      writefln("%s", SysTime(time * 100_000L));
>      writefln("%s", SysTime(time * 1_000_000L));
>
>      writefln("%s", Clock.currTime.stdTime);
> }
>
> Outputs:
>
> 0001-Jan-02 07:36:48.5781342
> 0001-Jan-17 03:04:47.781342
> 0001-Jun-14 05:44:39.81342
> 0005-Jul-04 08:23:20.1342
> 0046-Jan-21 10:50:03.342
> 0451-Jul-28 11:17:15.42
> 4506-Sep-18 16:42:14.2
> 635582516
>
> My expectation would be that the final line would be something beginning
> with "14" at least. Playing around with possible multipliers, there
> doesn't even seem to be any integer value that would allow conversion
> between the timestamp I received and whatever SysTime expects.
>
> I'm using:
>
> DMD64 D Compiler v2.066.1
> Ubuntu from .deb package
>
> Is this a bug, or am I doing something wrong?


On a slightly related note, I have code for UTC+0 to unix time stamp.
https://github.com/Devisualization/util/blob/b9ab5758e755c4e33832ac4aed0a5d7f2c728faf/source/core/devisualization/util/core/time.d


More information about the Digitalmars-d-learn mailing list