Sha256: 4c543d835ec976acdee9e938ed967eebde4450d25505e5fa13ee7f1a1a63bca6

Contents?: true

Size: 860 Bytes

Versions: 2

Compression:

Stored size: 860 Bytes

Contents

module gigasecond;

import std.datetime;
import core.time : seconds;

enum Gigasecond = seconds(10^^9);

DateTime gsAnniversary(in DateTime start) pure {
    return start + Gigasecond;
}

unittest {
    assert(gsAnniversary(DateTime(2011, 4, 25)) == DateTime(2043, 1, 1, 1, 46, 40));
    assert(gsAnniversary(DateTime(1977, 6, 13)) == DateTime(2009, 2, 19, 1, 46, 40));
    assert(gsAnniversary(DateTime(1959, 7, 19)) == DateTime(1991, 3, 27, 1, 46, 40));
    assert(gsAnniversary(DateTime(2015, 1, 24, 22, 0, 0)) == DateTime(2046, 10, 2, 23, 46, 40));
    assert(gsAnniversary(DateTime(2015, 1, 24, 23, 59, 59)) == DateTime(2046, 10, 3, 1, 46, 39));

    //check that it doesn't mutate the argument
    auto d = DateTime(2011, 4, 25);
    assert(gsAnniversary(d) == DateTime(2043, 1, 1, 1, 46, 40));
    assert(d == DateTime(2011, 4, 25));
}

void main () {}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
trackler-2.1.0.27 tracks/dlang/exercises/gigasecond/gigasecond_example.d
trackler-2.1.0.26 tracks/dlang/exercises/gigasecond/gigasecond_example.d