# [thechat] determining most recent midnight

deacon b. web at master.gen.in.us
Fri Feb 21 08:03:09 CST 2003

```On 20 Feb 2003 at 19:18, gozz wrote:

> Was going to post this to the list, but solved my problem
> by converting to a string date w/o the time and then
> parsing that back into a unix epoch time ... but ... I can't
> figure out what's wrong with the way I was trying to
> mathematically figure out when the most recent midnight
> was:

> \$unix_time = seconds since Jan 1, 1970;
> \$seconds_in_day = 60 * 60 * 24;
> \$seconds_since_most_recent_midnight = \$unix_time %
> \$seconds_in_day;
> \$most_recent_midnight = \$unix_time -
> \$seconds_since_most_recent_midnight;

> Where do I go wrong there?

Works just fine.

\$unix_time = time();
print "Unix time is " . \$unix_time . "\n";
\$seconds_in_day = 60 * 60 * 24;
print "Seconds in day = " . \$seconds_in_day . "\n";
\$seconds_since_most_recent_midnight =
\$unix_time % \$seconds_in_day;
print "Seconds since last midnight = " .
\$seconds_since_most_recent_midnight . "\n";
\$most_recent_midnight = \$unix_time -
\$seconds_since_most_recent_midnight;
print "Most recent midnight = " .
\$most_recent_midnight . "\n";

(\$sec,\$min,\$hour,\$mday,\$mon,\$year,\$wday,\$yday,
\$isdst) =
gmtime(\$most_recent_midnight);

print "Month is \$mon\n";
print "Day is \$mday\n";
print "Hour is \$hour\n";
print "Minute is \$min\n";
print "Second is \$sec\n";

Unix time is 1045835951
Seconds in day = 86400
Seconds since last midnight = 50351
Most recent midnight = 1045785600
Month is 1
Day is 21
Hour is 0
Minute is 0
Second is 0

(Month is 1 because January is 0.)

deke

--
What does the Bible clearly say about dieting?
You shouldn't do it:
"Therefore I say unto you,
Take no thought for your life,
what ye shall eat, or what ye shall drink;
nor yet for your body, what ye shall put on."
- Matthew 6:25

```