how to parse a string into a phobos datatype with additional logic

Puming via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Apr 7 19:43:57 PDT 2016


On Thursday, 7 April 2016 at 11:07:35 UTC, Marc Schütz wrote:
> On Thursday, 7 April 2016 at 08:06:03 UTC, Puming wrote:
>> On Thursday, 7 April 2016 at 07:45:06 UTC, yawniek wrote:
>>> what is the way one is supposed to parse e.g. a
>>> double of unixtime (as delived by nginx logs) into a SysTime?
>>>
>>> currently i'm creating a wrapper struct around SysTime with 
>>> alias this as:
>>>
>>> https://gist.github.com/yannick/6caf5a5184beea0c24f35d9d4a4c7783
>>>
>>> really ugly imho.
>>>
>>> is there a better way to do this?
>>
>> you mean 
>> http://dlang.org/phobos/std_datetime.html#.SysTime.fromUnixTime ?
>
> That one only accepts `long`, though, so you'd lose sub-second 
> precision.

Yes, might be due to that standard UnixTime only has second 
precision.

For the sub-second part, you need to add a duration like nsecs. 
It's still ugly, but you don't need another struct if what you 
want is just a SysTime.

SysTime parseNginxTime(string t) {
    // assuming the nginx time has precision of nano-seconds.
    return SysTime.fromUnixTime(t[0..$-9].to!long)
            + t[$-9..$].to!long.nsecs;
}

The problem though is that SysTime only hode precision to the 
hnsec, so the last three digits is actually lost.


More information about the Digitalmars-d-learn mailing list