I’m using the Windows::Foundation::DateTime structure at the moment, and the value it’s giving me for the UTC time (its UniversalTime member) is not a UNIX timestamp, and I can’t find ANY documention on how to read it. So I did a few tests:
Let
A equal 129862800600000000 where A is UniversalTime's value at 23:00 on 11/7/2012
and let
B equal 129862476000000000 where B is UniversalTime's value at 15:00 on 11/7/2012
We can there for assume that 8 hours of time in whatever format UniversalTime takes can be interpreted as A-B. We therefore have
A-B = 3246000000 = 8 hours
(A-B)/8 = 405750000 = 1 hour
((A-B)/8)/60 = 6762500 = 1 minute
(((A-B)/8)/60)/60 = 112708.(3...) = 1 second
This turned out to be completely incorrect. If you add 405750000 to a DateTime object’s UniversalTime member, for example, it most certainly does not add an hour to it. Instead, it seems to add only 40 seconds.
Basically I just need to be able to determine the number of days that have passed since the unix epoch.
In any event, if anyone has any advice or help, that would be great.
Edit:
I’ve also thought about the possibility that they’re using a bitmask to get/set everything. But I’m not sure how to go about checking that, at the moment. (It’s 4 AM, and I need to sleep. rofl)
Edit 2:
Example for what I’m currently trying to do:
if((post_date.UniversalTime/(60*60*24))>num_seconds_since_unix_epoch_for_current_day){
date_formatter=ref new DateTimeFormatter("{month.abbreviated} {day.integer(1)}, {year.full} at {hour.integer(1)}:{minute.integer(2)}:{second.integer(2)}");
}else{
date_formatter=ref new DateTimeFormatter("Today at {hour.integer(1)}:{minute.integer(2)}");
}
date_string = date_formatter->format(post_date);
The UniversalTime field of a Windows::Foundation::DateTime is the number of 100ns units since 1/1/1601. It’s exactly the same as a Windows FILETIME structure. Note that the UniversalTime is UTC, which is often different from the local time.