From: Christopher Milan Date: Mon, 17 Mar 2025 06:17:53 +0000 (-0700) Subject: fix timezones X-Git-Url: http://git.ais-ucla.org/?a=commitdiff_plain;ds=inline;p=stats.ais-ucla.org.git fix timezones --- diff --git a/leader.cgi b/leader.cgi index 7b956da..155eb5b 100755 --- a/leader.cgi +++ b/leader.cgi @@ -3,9 +3,21 @@ use strict; use warnings; use CGI qw(:standard); use DBI; +use POSIX qw(strftime mktime); $ENV{TZ} = 'America/Los_Angeles'; +sub get_unix_timestamp { + my ($year, $month, $day) = @_; + return mktime(0, 0, 0, $day, $month - 1, $year - 1900); +} + +my ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(); + +my $today_pst = get_unix_timestamp($year + 1900, $mon + 1, $mday); +my $week_start_pst = get_unix_timestamp($year + 1900, $mon + 1, $mday - $wday); +my $month_start_pst = get_unix_timestamp($year + 1900, $mon + 1, 1); + print header(-type => 'text/html', -charset => 'utf-8'); print start_html(-title => "GPU Leaderboard", -style => {-src => 'index.css'}); @@ -20,7 +32,7 @@ my $query_today = qq{ SELECT u.name, SUM(g.util * (1.0/60.0)) AS gpu_hours FROM usage g JOIN users u ON g.uid = u.uid - WHERE g.time >= datetime('now', 'start of day') + WHERE g.time >= ? GROUP BY u.uid ORDER BY gpu_hours DESC; }; @@ -29,7 +41,7 @@ my $query_week = qq{ SELECT u.name, SUM(g.util * (1.0/60.0)) AS gpu_hours FROM usage g JOIN users u ON g.uid = u.uid - WHERE g.time >= datetime('now', 'start of day', '-' || strftime('%w', 'now') || ' days') + WHERE g.time >= ? GROUP BY u.uid ORDER BY gpu_hours DESC; }; @@ -38,7 +50,7 @@ my $query_month = qq{ SELECT u.name, SUM(g.util * (1.0/60.0)) AS gpu_hours FROM usage g JOIN users u ON g.uid = u.uid - WHERE g.time >= datetime('now', 'start of month') + WHERE g.time >= ? GROUP BY u.uid ORDER BY gpu_hours DESC; }; @@ -52,13 +64,13 @@ my $query_alltime = qq{ }; my $sth_today = $dbh->prepare($query_today); -$sth_today->execute(); +$sth_today->execute($today_pst); my $sth_week = $dbh->prepare($query_week); -$sth_week->execute(); +$sth_week->execute($week_start_pst); my $sth_month = $dbh->prepare($query_month); -$sth_month->execute(); +$sth_month->execute($month_start_pst); my $sth_alltime = $dbh->prepare($query_alltime); $sth_alltime->execute(); @@ -74,7 +86,7 @@ print ""; print ""; while (my $row = $sth_today->fetchrow_hashref) { print ""; - print ""; + print ""; print ""; print ""; } @@ -88,7 +100,7 @@ print "
NameGPU Hours
$row->{name}{name}\">$row->{name}" . sprintf("%.2f", $row->{gpu_hours} || 0) . "
"; print ""; while (my $row = $sth_week->fetchrow_hashref) { print ""; - print ""; + print ""; print ""; print ""; } @@ -102,7 +114,7 @@ print "
NameGPU Hours
$row->{name}{name}\">$row->{name}" . sprintf("%.2f", $row->{gpu_hours} || 0) . "
"; print ""; while (my $row = $sth_month->fetchrow_hashref) { print ""; - print ""; + print ""; print ""; print ""; } @@ -116,7 +128,7 @@ print "
NameGPU Hours
$row->{name}{name}\">$row->{name}" . sprintf("%.2f", $row->{gpu_hours} || 0) . "
"; print ""; while (my $row = $sth_alltime->fetchrow_hashref) { print ""; - print ""; + print ""; print ""; print ""; }
NameGPU Hours
$row->{name}{name}\">$row->{name}" . sprintf("%.2f", $row->{gpu_hours} || 0) . "