digitalmars.D.learn - std.datetime: Getting unix time from 1970

I am trying to get the number of seconds from 1970 using the
std.datetime module.
long val = SysTime(Date(1996, 1, 1)).toUnixTime()
Shouldnt the above statement give me a Timezone independent result i.e.
'toUnixTime'.
Also, is there a method to get seconds directly from Date and DateTime
instead of creating SysTime.
Regards
Mandeep

I am trying to get the number of seconds from 1970 using the
std.datetime module.
long val = SysTime(Date(1996, 1, 1)).toUnixTime()
Shouldnt the above statement give me a Timezone independent result i.e.
'toUnixTime'.

unix time is _always_ in UTC by definition.
You're creating a SysTime with the Date of 1996-1-1 at midnight in your local
time zone. That gets translated to whatever the appropriate time is in UTC and
is kept internally as hecto-nanoseconds (100 ns) from midnight, January 1st 1
A.D. in UTC. You're then asking it to give you the unix time as a time_t, so
it translates the hnsecs from midnight, January 1st 1 A.D. to seconds from
midnight, January 1st 1970 A.D. The only part of all of that that relates to a
time zone other than UTC is when you created the SysTime, since it needs a
time zone to translate from a generic date to hnsecs in UTC, and it defaults
to using LocalTime.

Also, is there a method to get seconds directly from Date and DateTime
instead of creating SysTime.

Date doesn't have seconds. It only has the year, month, and day.
DateTime _does_ have seconds, since it holds both a Date and a TimeOfDay. It
has the seconds property. This is exactly the same as with SysTime except that
DateTime holds the seconds internally, so it doesn't have to do any
calculations to get the seconds, and it doesn't do anything with time zones,
so it doesn't have to worry about adjusting for that either.
auto dt1 = DateTime(1996, 1, 1, 12, 0, 30);
auto sec1 = dt1.seconds;
assert(sec1 == 30);
auto st = SysTime(dt1);
auto sec2 = st.seconds;
assert(sec1 == sec2);
auto dt2 = cast(DateTime)st;
assert(dt1 == dt2);
- Jonathan M Davis