Q:

about posix ftime in C++

I am looking in to the code about getting utc time.
static const long long SECSEPOCHS = 11644473600ll;
static const long long SECSto100nanosecs = 10000000ll; 
static const long long MSECSto100nanosecs = 10000ll;
longlong mytime;
struct timeb now;

ftime(&now);
mytime = now.time;
mytime += SECSEPOCHS 
mytime *= SECSto100nanosecs;
mytime += now.millitm * MSECSto100nanosecs;

I have following questions about above code.
What is the magic number "11644473600ll", how we got that number, and why we are adding this number to now.time that is returned by ftime. What is epcoh mean here?
Thanks

A:

Epoch refers to the reference time that is used to calculate further events. For example if I decide that 1st Jan 2000 is the reference time (EPOCH) so whenever we I say "1 year past". It will mean that it is 1st Jan 2001 as our reference was year 2000. 
Windows NT time is specified as the number of 100 nanosecond intervals since January 1, 1601. UNIX time is specified as the number of seconds since January 1, 1970. There are 134,774 days (or 11,644,473,600 seconds) between these dates.

