strtotime() converts the input string to a unix timestamp. If your input string has no timezone information, PHP must guess at which timezone you mean. It doesn't really guess... it looks at your default time zone.
The UNIX timestamp is the number of seconds since January 1, 1970 UTC. So if you do this:
echo strtotime('1970-01-01 00:00:00');
// depends on your default time zone
you might expect zero. But you aren't specifying a timezone in the string, so it will use the default timezone. The actual output will vary.
date_default_timezone_set('UTC');
echo strtotime('1970-01-01 00:00:00');
// always 0
Now it will be zero. Or you can remove the ambiguity:
echo strtotime('1970-01-01 00:00:00 UTC');
// always 0
Likewise, when you use date(), PHP applies the default timezone when displaying the time.
The code in your question does not actually show where your error is. So I cannot really tell you what your problem is, other than you don't understand how PHP works with time stamps and time zones.
If your time stamp is correct, then you probably just need to use date_default_timezone_set() to set your timezone. That will affect all future calls to date().
You also may be interested in using the DateTime class, which is more straightforward than counting seconds from 1970.