]> git.ais-ucla.org Git - stats.ais-ucla.org.git/commitdiff
fix timezones master
authorChristopher Milan <chrismilan@ucla.edu>
Mon, 17 Mar 2025 06:17:53 +0000 (23:17 -0700)
committerChristopher Milan <chrismilan@ucla.edu>
Mon, 17 Mar 2025 06:52:13 +0000 (23:52 -0700)
leader.cgi

index 7b956da8d84f234bbd46f10e90bd395775fe0324..155eb5b82f4fe19b54482efe6c9fb1d01b4fa17b 100755 (executable)
@@ -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 "<table border='1' cellspacing='0' cellpadding='5'>";
 print "<tr><th>Name</th><th>GPU Hours</th></tr>";
 while (my $row = $sth_today->fetchrow_hashref) {
     print "<tr>";
-    print "<td>$row->{name}</td>";
+    print "<td><a href=\"//ais-ucla.org/~$row->{name}\">$row->{name}</a></td>";
     print "<td>" . sprintf("%.2f", $row->{gpu_hours} || 0) . "</td>";
     print "</tr>";
 }
@@ -88,7 +100,7 @@ print "<table border='1' cellspacing='0' cellpadding='5'>";
 print "<tr><th>Name</th><th>GPU Hours</th></tr>";
 while (my $row = $sth_week->fetchrow_hashref) {
     print "<tr>";
-    print "<td>$row->{name}</td>";
+    print "<td><a href=\"//ais-ucla.org/~$row->{name}\">$row->{name}</a></td>";
     print "<td>" . sprintf("%.2f", $row->{gpu_hours} || 0) . "</td>";
     print "</tr>";
 }
@@ -102,7 +114,7 @@ print "<table border='1' cellspacing='0' cellpadding='5'>";
 print "<tr><th>Name</th><th>GPU Hours</th></tr>";
 while (my $row = $sth_month->fetchrow_hashref) {
     print "<tr>";
-    print "<td>$row->{name}</td>";
+    print "<td><a href=\"//ais-ucla.org/~$row->{name}\">$row->{name}</a></td>";
     print "<td>" . sprintf("%.2f", $row->{gpu_hours} || 0) . "</td>";
     print "</tr>";
 }
@@ -116,7 +128,7 @@ print "<table border='1' cellspacing='0' cellpadding='5'>";
 print "<tr><th>Name</th><th>GPU Hours</th></tr>";
 while (my $row = $sth_alltime->fetchrow_hashref) {
     print "<tr>";
-    print "<td>$row->{name}</td>";
+    print "<td><a href=\"//ais-ucla.org/~$row->{name}\">$row->{name}</a></td>";
     print "<td>" . sprintf("%.2f", $row->{gpu_hours} || 0) . "</td>";
     print "</tr>";
 }