Skip to content
Browse files

Fixes to functions relating to user timezones

  • Loading branch information...
1 parent d3e2c35 commit d552ead0e74303acdd234ed11f33c5fd28d3e1f8 martin committed
Showing with 38 additions and 2 deletions.
  1. +38 −2 lib/moodlelib.php
View
40 lib/moodlelib.php
@@ -204,6 +204,7 @@ function update_module_icon($moduleid) {
function userdate($date, $format="", $timezone=99) {
+// Returns a formatted string that represents a date in user time
global $USER;
if ($format == "") {
@@ -213,12 +214,13 @@ function userdate($date, $format="", $timezone=99) {
$timezone = (float)$USER->timezone;
}
if (abs($timezone) > 12) {
- return date("$format T", $date);
+ return date("$format", $date);
}
return gmdate($format, $date + (int)($timezone * 3600));
}
function usergetdate($date, $timezone=99) {
+// Returns an array that represents a date in user time
global $USER;
if ($timezone == 99) {
@@ -227,7 +229,41 @@ function usergetdate($date, $timezone=99) {
if (abs($timezone) > 12) {
return getdate($date);
}
- return getdate($date + (int)($timezone * 3600));
+ return getdate($date - (int)($timezone * 3600));
+}
+
+function usertime($date, $timezone=99) {
+// Given a GMT timestamp (seconds since epoch), offsets it by
+// the timezone. eg 3pm in India is 3pm GMT - 7 * 3600 seconds
+ global $USER;
+
+ if ($timezone == 99) {
+ $timezone = (float)$USER->timezone;
+ }
+ if (abs($timezone) > 12) {
+ return $date;
+ }
+ return $date - (int)($timezone * 3600);
+}
+
+function usertimezone($timezone=99) {
+// returns a string that prints the user's timezone
+ global $USER;
+
+ if ($timezone == 99) {
+ $timezone = (float)$USER->timezone;
+ }
+ if (abs($timezone) > 12) {
+ return "server time";
+ }
+ if (abs($timezone) < 0.5) {
+ return "GMT";
+ }
+ if ($timezone > 0) {
+ return "GMT+$timezone";
+ } else {
+ return "GMT$timezone";
+ }
}

0 comments on commit d552ead

Please sign in to comment.
Something went wrong with that request. Please try again.